如何只在一行中grep第二个数字?

xml*_*lmx 3 regex unix linux bash shell

给出的内容test.txt如下:

Hello 10 love 20 haha 30
Hello Hello 11 love love 21 haha 31
41 Hello Hello 42 love love 43 haha 44
Run Code Online (Sandbox Code Playgroud)

我想要某种表达方式grep,以便在说完之后:

$ cat test.txt | grep ???
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

20
21
42
Run Code Online (Sandbox Code Playgroud)

如何实现这个功能呢?

Avi*_*Raj 5

看来您正在尝试获取第二个号码..

grep -oP '^\D*\d+\D*\K\d+' file
Run Code Online (Sandbox Code Playgroud)

或者

使用 sed。

sed 's/^[^[:digit:]]*[[:digit:]]\+[^[:digit:]]*\([[:digit:]]\+\).*/\1/' file
Run Code Online (Sandbox Code Playgroud)

演示版