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

时间:2018-06-10 19:29:24

标签: sed

我想在没有任何内容的情况下替换文件中的少量字符串,但是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

2 个答案:

答案 0 :(得分:1)

删除单引号:

sed "s/text1 text2//" file.xml

答案 1 :(得分:1)

您可以使用

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

输出:

<tag>sample</tag>

使用分组。首先将直到空格的所有字符组合在一起,然后匹配所有字符直到<,并将所有后续字符分组到另一个组中。