我正在尝试匹配一行中有多个key = value的行中的key = value对。尝试执行此操作时,该值将替换为以下要删除的key = value。
sed -e '/<key/ s/key1=.* /key1="70" /g' -i file
预期o / p:
<key=value key1="value" key2=value key3=value>
实际输出:
<key=value key1="70" key3=value>
答案 0 :(得分:1)
此部分:
/key1=.* /
表示"key1=" followed by anything, followed by a space
。
由于匹配是贪婪的,因此它会尽可能匹配"value"[space]key2=value[space]
。
我建议您将其更改为:
/key1=[^ ]* /
表示"key1=" followed by any number of non-space characters, followed by a space
。