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个或多个)

 

posted @ 2021-06-19 14:58  挣扎的咸鱼  阅读(105)  评论(0)    收藏  举报