我正在尝试从“123 var1 = test1 var2 = test2 456”中删除“var1 = test1”
出于某种原因,结果还会删除var2 = test2 ...为什么会发生这种情况?如何解决?
echo 123 var1 = test1 var2 = test2 456 | sed“s / var1 =。* // g”
结果是: 123 456
谢谢!
答案 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想要对^
做些什么,你可能想把它放在单引号中