SVN日志返回以下信息,但我试图根据评论获取修订号。
由于返回的值是多行的,有没有办法使用正则表达式查找'1712'(在最后一行),然后只返回相应的修订号r1055457(从第一行)?
r1055457 | test | 2017-10-26 12:02:33 -0700 (26 Oct 2010) | 3 lines
Changed paths:
M /search/config/legal.json
M /search/server/server.js
[1712]- test commmends
我尝试了几个命令,但它只返回了具有正则表达式的所有内容。
svn -v log search --limit 1 | awk '/^r[0-9]/,/1712/'
svn -v log search --limit 1| sed -e '/^r[0-9]*/,/1712/!d'
答案 0 :(得分:1)
awk
救援!
$ ... | awk '/^r[0-9]+/{rev=$1} rev && /^\[1712\]/{print rev; rev=""}'
r1055457
答案 1 :(得分:0)
使用sed
$ ... | sed -n '/^r[0-9][0-9]*/N;:A /\nr[0-9][0-9]*/D;/1712/!{s/\n.*//;N;bA};s/|.*\n.*//p'
答案 2 :(得分:-1)
您也可以将此awk与空RS
一起使用,从而将所有连续的非空行视为一条记录:
svn -v log search --limit 1 | awk -v RS= '/1712[^\n]*$/{print $1}'
r1055457
在[^\n]*$
之后 1712
确保我们仅在最后一行之前匹配1712
。