sed正在替换整行而不仅仅是字符串

sed正在替换整行而不仅仅是字符串,sed,Sed,我只想用零替换文件中的几个字符串,但是sed替换了整行。有人能帮我吗 file.xml中的行: <tag>sample text1 text2</tag> 我也试过了 sed -i -e "s/'text1 text2'//" file.xml 2>/dev/null || : 预期结果: <tag>sample</tag> 其他: text1 and text 2 are complex text with .=- characte

我只想用零替换文件中的几个字符串,但是sed替换了整行。有人能帮我吗

file.xml中的行:

<tag>sample text1 text2</tag>
我也试过了

 sed -i -e "s/'text1 text2'//" file.xml 2>/dev/null || :
预期结果:

<tag>sample</tag>
其他:

text1 and text 2 are complex text with .=- characters in it
我能做些什么来解决这个问题


TIA删除单引号:

sed "s/text1 text2//" file.xml
你可以用

sed 's/\([^ ]*\)[^<]*\(.*\)/\1\2/' filename

sed的/\([^]*\)[^正则表达式与您给我们看的行不匹配,因此肯定有其他问题。请发布一个。我建议使用XML/HTML解析器(xmlstarlet,xmllint…)。它仍然会删除令人费解的行。它对我有效。$sed“s/text1 text2/”txt.xml-->sample可能是因为我有一个与实际不符的示例!如果text1和text2中有字符-&=?例如text1实际上是-text=1,text2实际上是-text=2?那么我需要将-text=1-text=2替换为零
sed "s/text1 text2//" file.xml
sed 's/\([^ ]*\)[^<]*\(.*\)/\1\2/' filename
<tag>sample</tag>