使用grep只匹配一行中的模式一次

Ank*_*wal 8 regex linux bash grep

我有这个:

 echo 12345 | grep -o '[[:digit:]]\{1,4\}'
Run Code Online (Sandbox Code Playgroud)

这给了这个:

1234
5
Run Code Online (Sandbox Code Playgroud)

我知道发生了什么事.如何在成功匹配后阻止grep尝试继续匹配?

我怎么才得到

1234
Run Code Online (Sandbox Code Playgroud)

And*_*ite 9

你想要grep停止匹配还是只关心第一场比赛.你可以使用,head如果后者是真的......

`grep stuff | head -n 1` 
Run Code Online (Sandbox Code Playgroud)

Grep是一个基于行的util,因此该-m 1标志告诉grep在匹配第一行时停止,当与head结合时,它在实践中非常好.


Mac*_*ers 5

你需要进行分组:\(...\)然后是确切的发生次数:\{<n>\}做这项工作:

maci:~ san$ echo 12345 | grep -o '\([[:digit:]]\)\{4\}'
1234
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.干杯!!