bash / sed - 搜索一行,更改它并将其复制到找到的行下方

时间:2014-10-27 13:55:56

标签: bash shell sed

我正在寻找一种简单的方法来更改一个文件中的多行,编辑它们并在找到的行下复制它们。

编辑前的示例:

...
#-#parents     hostnamexy
...
...
#-#parents     hostnameyz
...

编辑后的示例:

...
#-#parents     hostnamexy
_parents       hostnamexy
...
...
#-#parents     hostnameyz
_parents       hostnameyz
...

我不想写一个大的shell脚本来做这个并认为它可以用sed吗?

感谢您的帮助!!

Greets Matze

3 个答案:

答案 0 :(得分:3)

sed '/#-#parents/{p;s/#-#/_/;}'

打印所有字符串,但是当我们有#-#parents时,会打印该字符串,然后进行替换。自动打印负责发出固定版本。

IHTH。

答案 1 :(得分:1)

awk '7;sub(/^#-#parents/,"_parents")' file

这条线可能有用。

答案 2 :(得分:0)

awk '1;/Searchterm/{print "whatever you want"}' file

确切输入和输出

awk '1;/hostname/{print "_parents\t"$2 }' file