【发布时间】:2016-06-21 05:26:41
【问题描述】:
我想为 sed 创建一个模式,它将找出 'type="" 为此,我尝试使用该模式
type=".*\?"
echo 'aa type="none" stretchChildren="first"' | sed s/'type=".*\?"'/hello/
上面是打印的 sed 命令
你好
这意味着它为 'type=".*\?"' 选择了 'type="none" stretchChildren="first"'
下面是在同一字符串上使用相同模式的 grep 命令
echo 'aa type="none" stretchChildren="first"' | grep -oP 'type=".*?"'
它给出输出
type="none"
不知道我在 sed 模式中缺少什么
有人可以帮我吗 sed 的输出应该是
你好,stretchChildren="first"
【问题讨论】:
-
你在哪个平台上?您正在对
grep和sed的方言做出不可移植的假设。看起来您可能在 Linux 上或使用 GNUsed和grep,但也可以这么说。 -
为什么不使用简单的模式:
type="[^"]*",它在sed和grep中的工作方式相同,无需额外选项,并且可以执行您想要的操作。
标签: bash shell sed grep non-greedy