我想在没有任何内容的情况下替换文件中的少量字符串,但是sed会替换整行。有人可以帮我弄这个吗?
在file.xml中的行:
<tag>sample text1 text2</tag>
我的代码:
sed "s/'text1 text2'//" file.xml 2>/dev/null || :
我也试过
sed -i -e "s/'text1 text2'//" file.xml 2>/dev/null || :
预期结果:
<tag>sample</tag>
实际结果:
The whole line is removed from file.
其他:
text1 and text 2 are complex text with .=- characters in it
我该怎么做才能解决这个问题?
TIA
答案 0 :(得分:1)
删除单引号:
sed "s/text1 text2//" file.xml
答案 1 :(得分:1)
您可以使用
sed 's/\([^ ]*\)[^<]*\(.*\)/\1\2/' filename
输出:
<tag>sample</tag>
使用分组。首先将直到空格的所有字符组合在一起,然后匹配所有字符直到<
,并将所有后续字符分组到另一个组中。