Erwann Asked: 2022-05-20 19:00:32 +0800 CST2022-05-20 19:00:32 +0800 CST 2022-05-20 19:00:32 +0800 CST 没有使用 sed 获得惰性评估 772 我本来期望'a'为此,为什么'a:b'? $ echo "a:b:c" | sed -E 's/(.+?):.+/\1/' a:b regular-expression sed 1 个回答 Voted Best Answer cas 2022-05-20T19:59:52+08:002022-05-20T19:59:52+08:00 大多数版本sed不支持 perl 风格的正则表达式(我知道的唯一一个是“super sed”,ssed,自 2005 年以来一直没有更新),并且不支持?non-greedy 修饰符。 如果您想使用该精确的正则表达式,最简单的解决方案是使用perl: $ echo "a:b:c" | perl -pe 's/(.+?):.+/$1/' a 否则,修改正则表达式,使捕获匹配除冒号以外的任何字符: $ echo "a:b:c" | sed -E 's/([^:]+):.+/\1/' a
大多数版本
sed
不支持 perl 风格的正则表达式(我知道的唯一一个是“super sed”,ssed,自 2005 年以来一直没有更新),并且不支持?
non-greedy 修饰符。如果您想使用该精确的正则表达式,最简单的解决方案是使用
perl
:否则,修改正则表达式,使捕获匹配除冒号以外的任何字符: