linux命令之_原来sed命令这么简单

2021-10-26 21:32发布

linux中对文本进行编辑,常用的就是grepsedawk;而sed命令一直都是很多人心头的痛,感觉这个命令不太好使用,并且理解起来也比较困哪,所有自己就总结了一下sed的常规用法;sed 是一个很强大的文本编辑器。可以让我们不打开文本就直接编辑,也可以展示修改文本修改以后的样子(实际上没有修改), 对文本编辑完成之后,读取下一行直到所有的文本行都编辑完毕。但是sed选项有特别的多,并且有特别多的处理方式,所以接下来我们直接通过一些实际操作来理解sed命令

命令格式格式:sed [option] 'command' 文本文件

选项:

-i:表示inplace-edit,就地修改文件。

-h:显示帮助信息

命令:

动作a :新增,a的后面可以接字串,这些字串会在新的一行出现(目前的下一行)。动作d :删除,d后通常不接任何内容。

动作s :替换,默认替换每行中出现的第一处内容。

 

案例1  sed -i '2a\ujiuye' /tmp/file.txt   

#在这个文件第二行直接写入ujiuye,不用打开文件编辑     -i  能够直接修改文件

 

案例2  sed -i '1i\hello-World' /tmp/file.txt 

#在第一行插入helloWo  后面的i表示首行,如果不写1,则表示在所有行前面添加

 

案例3  sed 'i1\test' /tmp/file.txt 

#数字和后面的i位置不能改变,在每一行前面插入相应的内容,\t识别成了tab键,形成了空格

 

案例4  sed '$a\hello-world'  /tmp/file.txt   

#在最后一行的下一行插入内容

 

案例5  sed 's/旧串/新串/' /tmp/file.txt    

#将文件中的就字符串替换为新字符串,默认替换第一个

 

案例6  sed 's/旧串/新串/g' /tmp/file.txt    

#将文件中的就字符串全部替换为新字符串,后面的gglobal的意思 ,s前面也可以加具体的数据,表示具体的行

 

案例7  sed 'nd' /tmp/file.txt       

#删除文件中的内容,n表示数字,可写可不写,表示删除第几行

 

案例8  sed -n '3p' /tmp/file.txt    

#p表示打印,  打印第三行内容 前面的选项n表示特殊处理某一行

 

案例9  sed  -n '100,200p' /tmp/file.txt    

#打印这个文件的100行到200

 

案例10  sed '/My/,/You/d' /tmp/file.txt      

删除包含"My"的行到包含"You"的行之间的行

 

案例11  sed '/My/,10d' /tmp/file.txt    

#删除包含"My"的行到第十行的内容

 

案例12 sed '/my/d' datafile                

#删除包含my的行,其余的都被显示

 

案例13  sed -i 's/ujiuye/helloWorld&/' /tmp/file.txt   

#在所有ujiuye前面插入helloworld

 

案例14  sed  -i 's/ujiuye/&helloWorld/' /tmp/file.txt   

#在所有ujiuye后面插入helloWorld

 

案例15  sed  –i   s/^/ HEAD&//tmp/file.txt       

#在每行的头添加字符,比如HEAD

 

案例16  sed  -I s/$/&tail/’  /tmp/file.txt         

#在每行的尾部添加字符,比如tail

 

案例17  sed  -i  /^$/d;s/111/aaa&/;s/111/&bb/tmp/file.txt      

#删除所有空格并在指定位置插入相关内容  “^” 代表行首 “$” 代表行尾

 

案例18  sed -n '1,20s/My$/You/gp' datafile     

#取消默认输出,处理120行里匹配以My结尾的行,把行内所有的My替换为You,并打印到屏幕上。

 

#编辑多个文件

案例19  sed  -i 's/ujiuye/&helloWorld/' *.txt   

在所有的*.txt文档的ujiuye后面插入helloWorld