使用SED查找并替换特定值

时间:2019-05-16 21:30:01

标签: sed

我正在尝试匹配一行中有多个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>

1 个答案:

答案 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