从输出中获取特定数字

时间:2017-05-23 11:54:11

标签: sed grep

这是我的一些svn log命令的输出

------------------------------------------------------------------------
r23327 | xxx | 201x-0x-1x 15:09:20 +0200 (Mon, x x x) | 1 line
Changed paths:
   A /line/tags/1.1.1.1 (from /line/branches/uat:23326)

我想要从输出中grep或sed nummber 23327。有人可以帮帮我吗?我希望它与其他数字相同但布局相同。

我试过像

这样的东西
txt | grep '^r'
r23327 | xxx | 2017-05-15 15:09:20 +0200 (Mon, 15 May 2017) | 1 line

但是我需要摆脱'r'并在|

前的空格之前停下来

1 个答案:

答案 0 :(得分:1)

sed 方法:

sed -n 's/^r\([[:digit:]]*\) .*/\1/gp' file

输出:

23327

\([[:digit:]]*\) - 前面带有r

的数字的捕获组

grep (PCRE):

grep -Po '^r\K[0-9]+ ' file

-P - 允许PCRE

\K - 忽略匹配到当前位置(即在数字前忽略r