Shell实现以下功能: 通过关键词匹配到文件某一行,并在这一行末尾追加内容。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell实现以下功能: 通过关键词匹配到文件某一行,并在这一行末尾追加内容。相关的知识,希望对你有一定的参考价值。
例如:
原文件内容:
...
aaaa
bbbb 1234
bbbb 5678
cccc
...
在第一次出现bbbb的那一行的末尾追加“dddd”:
...
aaaa
bbbb 1234 dddd
bbbb 5678
cccc
...
cat 1.txt | grep bbbb | head -1 | awk 'print $1,$2,dddd'
sorry看错了你的需求,上面的只是把你需要的那一行打印出来了,应该用sed来插入,也很简单
sed -i 's/bbbb 1234/bbbb 1234 dddd/' 1.txt追问
老师,我希望能够改变原文件的内容~
追答sed -i 's/bbbb 1234/bbbb 1234 dddd/' 1.txt #用替换的方式
追问
还有一件事就是1234那部分内容是我无法确定的,sed工具有什么办法在匹配的关键词之后在末尾追加内容吗?老师,辛苦!
追答我不是老师啊(⊙﹏⊙)b
据我所知,sed用a可以在关键词下一行添加,用i可以在关键词上一行添加,如果有多个关键词可以用/bbbb/s/$/ dddd/在行尾添加,但是你只要在第一个关键词后面添加,那我就没法只用一条命令搞定了,你可以先grep再head -1得到准确关键词,再用sed添加
试了一下,可以搞
[root@room1pc01 data]# cat aaa.txtxaaaa
bbbb 1234
bbbb 5678
cccc
[root@room1pc01 data]# str=`grep bbbb aaa.txtx|head -1`;sed -i "/$str/s/$/ dddd/" aaa.txtx
[root@room1pc01 data]# cat aaa.txtx
aaaa
bbbb 1234 dddd
bbbb 5678
cccc
以上是关于Shell实现以下功能: 通过关键词匹配到文件某一行,并在这一行末尾追加内容。的主要内容,如果未能解决你的问题,请参考以下文章