sed 正则表达式匹配超出预期

sed 正则表达式匹配超出预期

这,

echo 'memory-type="3" reference-number="1" crc="0"' | sed 's/reference-number=".*"//g'

返回:

memory-type="3" 

我想:

memory-type="3" crc="0"

实现此目的的正则表达式是什么?

空白在最终结果中并不重要

答案1

你的问题是.*匹配最长的字符串;在你的情况下:

memory-type="3" reference-number="1" crc="0"
                                  ↑-------↑

您希望它仅匹配1.最简单的方法是匹配任意数量的任意字符,而不是任意数量的任意字符除了报价:

$ echo 'memory-type="3" reference-number="1" crc="0"' | sed 's/reference-number="[^"]*"//g'
memory-type="3"  crc="0"

相关内容