2017-02-26 86 views
0

使用GNUgrep如何讓`grep -o`只輸出一行中的第一個匹配項?

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

這裏的目標是隻輸出第一 「一」,而不是第二。添加-m 1不起作用。

不使用的配管的任何UTIL,(即| tail -1),確實GNUgrep單獨提供任何方式來只輸出第一,(或更好的Ñ th)時,匹配來自一個線?

Perl風格grep -P答案還可以。或者,如果上述已知是或者證明是不可能的,那也是一個答案。


注:這不是2009年問題How to make grep stop at first match on a line?的副本,因爲在這個問題的答案:

  1. 的OP解決了非一般的答案。
  2. 似乎有某種grep版本相關的錯誤。
+0

追加'| grep -m 1 .'。 – Cyrus

+0

@Cyrus:謝謝。 Q不清楚,我的意思是沒有任何其他util的管道,包括'grep'。現在已經改寫Q來消除這個漏洞。 – agc

+2

使用GNU grep? 'grep -Po'^。*?\ Ka {1}(?=。* $)'' – Cyrus

回答

1

我建議用GNU的grep:

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