Linux三件客(grep,sed ,awk)
一、grep
1、echo hello world 123 | grep hello 打印hello world 123 通过管道grep hello
2、查找test.txt文件不包括python的行 :grep -vn "python" test.txt
3、查找test.txt文件包括python的行数:grep -n “python” test.txt
4、查找test.txt文件中以n结尾的行:grep n$ test.txt
5、查找test.txt文件中以p开头的行:gerp ^p test.txt
二、sed(模式空间,通过-i可以更改原文件)
1、在第三行新增hello world:sed -i " 3 a hello world" test.txt
2、用hi替换第三行的hello world:sed -i "s /hello world/hi/g" test.txt(g代表全局修改)
3、删除test.txt第三行的内容:sed -i "3d" test.txt
4、在test.txt文件里第三行前 插入一行c++:sed -i "3i c++" test.txt
5、在sed后加上 -i 直接修改源文件,不加的话只是在模式空间里面操作,并不是实际操作,
三、awk
1、awk -F : ‘/java/{print $0}’ test.txt : 在test文件中找到包含Java的文案,并把所在的行全部打印出(-F 指定已:为分割符)
2、awk -F : ’/java/{print $3}‘ test.txt : 在test文件中找到包含Java的文案,并把文案所在的行第三个:分割的内容
3、awk -F : ’NR==3{print$0}‘ test.txt :打印test1文件中的第二行(NR==3 代表第几行,只能用’‘号)
4、awk -F : ’BEGIN{print“A B C”}{print $0}‘ test.txt :使用BEGIN在test文档里面加入A B C 标题
5、echo ”“11 22|33 44|55 66“ | awk ’BEGIN{RS=”|“}{print $0}‘ :自定义分割符通过管道| 把数字分割开)
四、正则表达式
1、\bhi\b :查找所有hi的单词
2、\bhello\b .*\bworld\b:查Z找hello后面有world的文案
3、^\d{5,12}$ :查找5-12位的QQ号
4、\ba\w*\b:匹配以字母a开头的单词(/w*代表有多个数字、字母、下划线)
5、\b\w{6}\b:匹配刚好6个字母的单词
6、\d+:匹配一个或更多的数字(+代表一个或多个,*代表0个或多个)

浙公网安备 33010602011771号