0

当我执行以下svn命令时,我得到以下输出。

$ svn log -r 1:HEAD --limit 1 http://plugins.svn.wordpress.org/bulk-delete
------------------------------------------------------------------------
r91525 | plugin-master | 2009-02-03 10:39:23 +0530 (Tue, 03 Feb 2009) | 1 line

adding bulk-delete by sudar
------------------------------------------------------------------------

我正在编写一个 shell 脚本,我想解析上述命令的输出并获取修订号(在本例中为 r91525)并将其存储在 shell 变量中,以便我可以在后续命令中使用它。

我尝试了 cut 命令并且能够在第二行中获得修订号,但其他行仍然出现。

$ svn log -r 1:HEAD --limit 1 http://plugins.svn.wordpress.org/bulk-delete | cut -f1 -d'|'
------------------------------------------------------------------------
r91525 

adding bulk-delete by sudar
------------------------------------------------------------------------

问题:如何检索修订号并存储在 shell 变量中,以便我可以在后续命令中使用它?

4

2 回答 2

2

试试这个 :

svn blahblah |awk 'NR==2{print $1;exit;}'

测试:

kent$  echo "------------------------------------------------------------------------
r91525 | plugin-master | 2009-02-03 10:39:23 +0530 (Tue, 03 Feb 2009) | 1 line

adding bulk-delete by sudar
------------------------------------------------------------------------"|awk 'NR==2{print $1;exit;}'
r91525
于 2012-12-19T15:13:14.493 回答
2

你可以用sed这个。

  svn log --limit 1 | sed -n -e 's/^\(r[0-9]\+\).*/\1/p'

这将只打印出修订,例如r1234

如果您只需要修订号,请使用

  svn log --limit 1 | sed -n -e 's/^r\([0-9]\+\).*/\1/p'

更新:将其存储在变量中

重击:

REVISION=$(svn log --limit 1 | sed -n -e 's/^r\([0-9]\+\).*/\1/p')

tcsh

  set revision = `svn log --limit 1 | sed -n -e 's/^r\([0-9]\+\).*/\1/p'`
于 2012-12-19T15:13:29.593 回答