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

Sed 用文件内容替换/替换模式,sed,Sed,首先,我在找到XXXXXXXXXX时插入inc香肠的内容 第二,我删除XXXXXXXXXX 这两个命令都完全符合我的要求。但是如何将这两个sed命令组合成一个sed命令呢? 我试过了 首先,您可以将两个sed命令连接到一行中,避免重复搜索字符串,如下所示: sed -i "s/xxxxxxxxxxxx/r inc-sauasge" git.html 此外,如果您只想删除xxxxxxxxxxx,而不想删除行中的其他内容,您可以这样做: sed -i -e "/xxxxxxxxxxxx/r inc

首先,我在找到XXXXXXXXXX时插入inc香肠的内容

第二,我删除XXXXXXXXXX

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


首先,您可以将两个
sed
命令连接到一行中,避免重复搜索字符串,如下所示:

sed -i "s/xxxxxxxxxxxx/r inc-sauasge" git.html
此外,如果您只想删除
xxxxxxxxxxx
,而不想删除行中的其他内容,您可以这样做:

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

这可能适合您:

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

请参阅为什么需要
$'\n'
。还要注意,
d
命令必须是最后一个命令,因为它删除图案空间,然后立即开始下一个循环

或对于GNU sed:

sed -i '/xxxxxxxxxxxx/{r inc-sausage'$'\n''d}' git.html
sed -i '/xxxxxxxxxxxx/{r inc-sausage'$'\n''d}' git.html
sed -i '/xxxxxxxxxxxx/s|.*|cat inc-sausage|e' git.html