Shell svn日志详细,但不包括一个修订详细信息

Shell svn日志详细,但不包括一个修订详细信息,shell,svn,unix,awk,cut,Shell,Svn,Unix,Awk,Cut,如何获取svn日志但排除分支添加的信息?如下面“svn log-v--stop on copy”的输出,如何避免-r101?我正在尝试将其重定向到一个临时文件,并只获取文件的添加/修改/删除详细信息。所以只需要记录详细信息,而不需要分支机构创建的修订 svn log -v local/svn/demo/branches/Fix --stop-on-copy -------------------------------------------------------------------

如何获取svn日志但排除分支添加的信息?如下面“svn log-v--stop on copy”的输出,如何避免-r101?我正在尝试将其重定向到一个临时文件,并只获取文件的添加/修改/删除详细信息。所以只需要记录详细信息,而不需要分支机构创建的修订

 svn log -v local/svn/demo/branches/Fix --stop-on-copy

 ------------------------------------------------------------------------
 r105 | user4 | 2013-05-24 16:27:11 -0400 (Fri, 24 May 2013) | 1 line
 Changed paths:
     M /branches/Fix/Code/Environment/RT/properties/build.properties

 ticket-9 
 ------------------------------------------------------------------------
 r104 | user4 | 2013-05-24 16:27:07 -0400 (Fri, 24 May 2013) | 1 line
 Changed paths:
     M /branches/Fix/Code/Environment/DEV/properties/build.properties

 ticket-7
 ------------------------------------------------------------------------
 r103 | user2 | 2013-05-24 15:27:25 -0400 (Fri, 24 May 2013) | 2 lines
 Changed paths:
     M /branches/Fix/Code/SharedApp/src/gov/illinois/ies/business/rules/ed/CorticonFinIncomeEntiyLoader.java

 ticket-2

 ------------------------------------------------------------------------
 r102 | user1 | 2013-05-24 15:19:54 -0400 (Fri, 24 May 2013) | 2 lines
 Changed paths:
    M /branches/Fix/Code/BEAN/Framework/ejbModule/gov/illinois/ies/business/rules/entities/fin/Income.java

 ticket-2

 ------------------------------------------------------------------------
 r101 | user4 | 2013-05-24 12:46:12 -0400 (Fri, 24 May 2013) | 3 lines
 Changed paths:
    A /branches/Fix (from /tags/2013-05-24T08:00:01.187-04:00_DEV_branch_WP_BUILD:100)

ticket-1

Re-creating the WP_Fix branch for 8AM tag
进一步更新:--现在我正在运行此::

    svn log "$src_url" --stop-on-copy | grep -B 2 "$ticket" | grep "^r" | cut -d"r" -f2 | cut -d" " -f1 | sort -r
我的输出是:

   105
   104
   103
   102
   101
预期产出:

   105
   104
   103
   102    

使用
awk
可以使用
regex range
。像这样的东西可以跳过你不想要的部分

awk '/r101/,/^$/ {next}1' <(svn log -v --stop-on-copy)

awk'/r101/,/^$/{next}1'选择适当的记录分隔符可以简化问题。根据您的示例输入,此
生成所需的输出

awk -v RS='(^|\n)-+\n' '
    # ignore empty records
    /^$/ {next}
    # assume "A /branches/" is the the pattern for what you want to ignore
    /A \/branches\// {next}
    # print the revision number without its first character
    {print substr($1, 2)}
' 

regex
(^ |\n)-+\n
的意思是:从数据的开头或换行符开始,匹配一个或多个连字符,后跟一个换行符。

您尝试过什么吗?使用svn--复制时停止修订版并不总是一样的。您希望从上面的日志中得到什么输出?我只是展示了一种使用
regex
的方法。当我运行
svn时--stop on copy
…它应该排除输出中的最后一个修订。就像上面的例子一样-r101@iaav根据需要获取文件详细信息的要求更新了答案。我建议使用
$1~/^[AMD]$/
。为什么使用

awk -v RS='(^|\n)-+\n' '
    # ignore empty records
    /^$/ {next}
    # assume "A /branches/" is the the pattern for what you want to ignore
    /A \/branches\// {next}
    # print the revision number without its first character
    {print substr($1, 2)}
'