如何让'grep -o`只输出一行的第一个匹配?

时间:2017-02-26 15:06:15

标签: grep

使用 GNU grep

echo zabczabc | egrep -o 'a{1}'
a
a

这里的目标是仅输出第一个“a”,而不是第二个。添加-m 1无效。

不使用任何util的管道(即| tail -1), GNU grep单独提供任何方式只输出第一个 ,(或者更好的是 n ),从一行匹配?

Perl 样式grep -P答案没问题。或者,如果已知上述情况,或者可证明是不可能的,那么这也是一个答案。

注意:这不是2009年问题How to make grep stop at first match on a line?的重复,因为答案是:

  1. OP决定采用非一般性答案。
  2. 似乎涉及某种与grep版本相关的错误。

1 个答案:

答案 0 :(得分:1)

我建议使用GNU grep:

grep -Po '^.*?\Ka{1}(?=.*)'