sed&awk / 未分类 · 2016年8月23日

sed 常用操作

一、在某行的前一行或后一行添加内容
cat test
11111
22222
3333
#行前, 在第一行前插入00000
sed -i ‘/11111/i00000’ test
sed -i ‘/11111/i\00000’ test #这样看比较方便
cat test
00000
11111
22222
3333
cat test
11111
22222
3333
#行后
sed -i '/11111/a00000' test
sed -i '/11111/a\00000' test

cat test
11111
00000
22222
3333
a or i
a
text Append text, which has each embedded newline preceded by a backslash.
i
text Insert text, which has each embedded newline preceded by a backslash.
可以配合find查找的内容处理
#巧妙添加html注释
find . -name server.xml|xargs sed -i ‘/directory/i
二、在某行(指具体行号)前或后加一行内容
evan@evankali:~/tmp$ cat test -n
1 00000
2 11111
3 22222
4 3333
5 d
evan@evankali:~/tmp$ sed -i 'N;4alove' test #ln 4后面加上新的一行,内容为love
evan@evankali:~/tmp$ cat test -n
1 00000
2 11111
3 22222
4 3333
5 love
6 d
evan@evankali:~/tmp$ sed -i ‘N;4ilove’ test
evan@evankali:~/tmp$ cat -n test
1 00000
2 11111
3 love
4 22222
5 3333
6 love
7 d
三、删除指定行的上一行或下一行
删除指定文件的上一行
sed -i -e :a -e ‘$!N;s/.*n(.*11111)/1/;ta’ -e ‘P;D’ test
删除指定文件的下一行
sed -i ‘/pattern=”%/{n;d}’ server.xml
参考
http://www.361way.com/sed-process-lines/2263.html
sed使用:在某一行前/后追加内容
http://blog.sina.com.cn/s/blog_6a1837e90102vg2l.html
删除指定行的上一行和下一行
https://blog.linuxeye.com/216.html
linux之sed用法 相当好的教程呀
http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html