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
答案 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