Linux的Shell--Sed操作(指定行增加删除内容)

一、在某行(指具体行号)前或后加一行内容

#第4行末尾追加一行,内容为test
sed -i 'N;4atest' test.txt   
#第4行行首追加一行,内容为test
sed -i 'N;4itest' test.txt   

#匹配到test字段的行行首插入一行
find . -name test.txt|xargs sed -i '/test/i <!--'   
#匹配到test字段的行行末插入一行
find . -name test.txt|xargs sed -i '/test/a -->'    

#所有行首增加
sed -i 's/^/ABC/' test.txt
#所有行尾添加
sed -i 's/$/XYZ/' test.txt

#第5行添加文件a.txt的内容
sed -i '5 r a.txt' test.txt

#oooo行文件a.txt的内容
sed -i '/oooo/r a.txt' 5.txt

二、删除操作

#删除指定行,例如第5行
sed -i '5 d' test.txt

#删除首行
sed -i '1d' test.txt

#删除末行
sed -i '$d' test.txt

#删除空行
sed -i '/^$/d' test.txt

#剔除空格
sed -i 's/[ ]*//g' test.txt

#删除车符
sed -i 's/^M//g' test.txt

#删除指定字段的下一行
sed -i '/test/{n;d}' test.txt  #匹配到test字段

#删除指定字段的上一行
sed -i -e :a -e '$!N;s/.*n(.*test)/1/;ta' -e 'P;d' test.txt    #匹配到test字段


三、其他操作

#将所有的行合并成一行,并用指定字符分割
sed ':a;N;$!ba;s/\n/,/g' test.txt


更多操作,请man sed
示例请参考:http://blog.csdn.net/m0_37886429/article/details/79034190


四、处理以下文件内容的命令

awk '/^ +/{p++}/^?/{t=s=0;v++;k[v]=p;p=0;next}!t&&!/^[0-9]/{s++;a[s]=a[s]?a[s]"\t"$0:$0;}/^[0-9]+/{m[++q]=$0;if($0>n) n=$0}
END{for(i=1;i<=n;i++) {print a[i];if(i<=v) {t=t?t"\t"m[i]:m[i];d=d?d"\t?":"\n?"}}print t,d}'  文件名
---------------------
 

猜你喜欢

转载自blog.csdn.net/mnasd/article/details/87473727
今日推荐