用文件内容替换/替换模式

时间:2011-12-21 07:31:29

标签: sed

sed -i "/xxxxxxxxxxxx/r inc-sausage" git.html
sed -i "/xxxxxxxxxxxx/d" git.html

首先,我在找到xxxxxxxxxxxx时插入inc-sausage的内容

其次我删除xxxxxxxxxxxx

这两个命令完全符合我的要求。但是如何将两个sed命令合并为一个? 我试过了

sed -i "s/xxxxxxxxxxxx/r inc-sauasge" git.html

2 个答案:

答案 0 :(得分:9)

对于初学者,你可以将两个sed命令连接成一行并避免重复搜索字符串,如下所示:

sed -i -e "/xxxxxxxxxxxx/r inc-sausage" -e "//d" git.html

此外,如果您只想删除xxxxxxxxxxxx而不是其他内容,则可以改为:

sed -i -e "/xxxxxxxxxxxx/r inc-sausage" -e "s///" git.html

答案 1 :(得分:3)

这可能对您有用:

sed -i '/xxxxxxxxxxxx/{r inc-sausage'$'\n''d}' git.html

说明:

请参阅here为什么$'\n'是必要的。另请注意,d命令必须是最后一个,因为它会删除模式空间,然后立即开始下一个循环。

或者对于GNU sed:

sed -i '/xxxxxxxxxxxx/s|.*|cat inc-sausage|e' git.html