1.awk
(1)针对文件进行读取过滤:
打印出每一行:awk '{print $0}' test.txt ------------$0表示一整行,$1表示通过空格分割后的第一个元素 ,$2 为第二个元素
通过 -F 指定分割符: awk -F ':' '{print $1}' test.txt ----------标识每一行用:分割成的元素,打印第一个
(2)处理管道中的内容:
获取当前目录列表的某列元素: ls | awk '{print $1}'
增加正则过滤,或者条件过滤: cat test.txt | awk {if {$1>0} print $1}
cat test.txt |awk '{/a*a/ print $1 }'
2.grep
(1)grep ' aaa' test.txt 过滤出包含有aaa的行
(2)cat test.txt |grep 'g*' 过滤出包含g开头的行
3.sed
sed命令的选项(option):
-n :只打印模式匹配的行
-e :直接在命令行模式上进行sed动作编辑,此为默认选项
-f :将sed的动作写在一个文件内,用–f filename 执行filename内的sed动作
-r :支持扩展表达式
-i :直接修改文件内容
动作说明:
• a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
• c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
• d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
• i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
• p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
• s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
注:如果没有加上 -i 是没有实际的修改文件内容的
未修改源文件:sed '2a 123456' test.txt
修改了源文件:sed -i '2a 123456' test.txt --在第二行后边加了一行 123456
对文件的的增删改查:
(1)增加 a,i
sed -i '2a 123456' test.txt --在第2行的后面加1行
sed -i '1,3a 123456' test.txt --在1,2,3行后边各增加1行
'1i' test.txt --在第1行的前面加1行
(2)删除 d
sed -i '2d' test.txt --删除第二行
sed -i '1,3d ' test.txt --删除1,2,3行
(3)更改 c,s
sed -i '2c 123456' test.txt --把第二行替换成123456
sed -i '1,2c 123456' test.txt --把1,2行替换成一行 123456
sed 's/old/new/' test.txt --默认替换每一行的第一个old,换成new
sed 's/old/new/gi' test.txt --匹配所有old替换为new,g 代表一行多个,i 代表匹配忽略大小写
sed '3,9s/old/new/gi' test.txt --替换3到9行的所有old,换成new,区分大小写
(4)查询、打印
sed -n '1,3p' test.txt --打印1-3行
sed -n '/222/p' test.txt --打印正则匹配到222的行
sed -n '/222/!p' test.txt --打印正则没有匹配到的行
(5)执行多条命令-e,执行文件中的命令-f
sed -e 's/系统/00/g' -e '2d' test.txt
sed -f ab.log test.txt
grep只显示第二列 grep保留第一行
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
python appium到库
大家在日常编程时,总会导入各种各样的库。我们可能经常会遇到导入模块失败的错误:ImportError: No module named 'xxx'或者ModuleNotFoundError: No module named 'xxx'。导入失败问题,通常分为两种:一种是导入自己写的模块(即以 .py 为后缀的文件),另一种是导入三方库。这次主要讨论第二种情况。解决导入 Python 库失败的问题,
python appium到库 python 自动导入缺失的库 ImportError ModuleNotFoundError