linux sed命令使用小结

最近在学习sed,工作中遇到的一些实际使用的场景,开篇博客记录一下免得以后忘记,不定期更新中~如果大家也正好在学的,那就一起学习下~

需求1:向文件中特定字符的上一行追加另一个文件的内容:

语句:sed -ie '/parameter/{h;s/.*/cat 48105config.xml/e;G}' sedtest.txt

parameter是sedtest.txt中的最后一行

48105config.xml是我需要添加到文件sedtest.txt的内容

参数h的意思是将当前模式空间中内容覆盖至保持空间

参数G的意思是将当前保持空间中的内容追加至模式空间

关于这两个参数的用法,大家可以参考这篇博客:http://blog.csdn.net/xiexingshishu/article/details/5051413


需求2:将flag1和flag2之间的999替换为888,文件中其他999不被替换

demo.txt文件内容如下:

flag1

abc999

bcd999

aaa888

bbb999

ccc666

flag2

999

a999

abc999

bdc999

语句: sed -i -e '/flag1/{:a;n;s/999/888/g;/flag2/!ba}' demo.txt

其中/flag1/表示先找到flag1这行

:a表示设置一个标签

:n表示读取下一行,即读取flag1的下一行

/flag2/!ba表示当前行不为flag2时,跳转到标签a处,继续执行替换动作s/999/888/g,b的意思相当于goto,跳转到标签处。





猜你喜欢

转载自blog.csdn.net/hszxd479946/article/details/79160928