使用SED删除X =和空间意外行为之间的文本

时间:2013-03-13 22:20:38

标签: bash replace sed

我正在尝试从“123 var1 = test1 var2 = test2 456”中删除“var1 = test1”

出于某种原因,结果还会删除var2 = test2 ...为什么会发生这种情况?如何解决?

  

echo 123 var1 = test1 var2 = test2 456 | sed“s / var1 =。* // g”

结果是: 123 456

谢谢!

3 个答案:

答案 0 :(得分:1)

echo '123 var1=test1 var2=test2 456' | sed -r 's/var1=\S+ //g'

你的错误是使用匹配到最后一个空格的贪婪.*。相反,我搜索非空格 \S

答案 1 :(得分:1)

这是因为/.* /捕获了所有内容,包括 last 空间。相反,尝试

sed "s/var1=[^ ]*//g"

删除{em>不空格的=后的所有内容。

答案 2 :(得分:0)

这是因为。*贪婪。由于第一个空格应该结束它,请使用:

s/var1=[^ ]* //g

如果你的shell想要对^

做些什么,你可能想把它放在单引号中