unix命令svn log以仅获取文件信息
只需要svn日志中的目录名和文件更改信息 这是我的svn日志unix命令svn log以仅获取文件信息,svn,unix,awk,cut,Svn,Unix,Awk,Cut,只需要svn日志中的目录名和文件更改信息 这是我的svn日志 svn log -v http://test/svn/Demo/branches/HelloWorld/Batch/ --limit 2 ------------------------------------------------------------------------ r133 | testuser1 | 2013-04-02 18:22:28 -0400 (Tue, 02 Apr 2013) | 3 lines Ch
svn log -v http://test/svn/Demo/branches/HelloWorld/Batch/ --limit 2
------------------------------------------------------------------------
r133 | testuser1 | 2013-04-02 18:22:28 -0400 (Tue, 02 Apr 2013) | 3 lines
Changed paths:
M /branches/HelloWorld/Batch/test.java
DEMO-13
Testing to lock
------------------------------------------------------------------------
r132 | testuser2 | 2013-04-02 18:20:40 -0400 (Tue, 02 Apr 2013) | 3 lines
Changed paths:
M /branches/HelloWorld/Batch/test.java
DEMO-1
Testing to lock
期望输出:
Batch/test.java
Batch/test.java
我的剧本:
svn log -v http://test/svn/Demo/branches/HelloWorld/Batch/ --limit 2 | awk '$1~/^[AMD]$/{for(i=2;i<=NF;i++)print $i}'
那么:
what ever process you are running | awk -v FS="[/ ]" '$1~/^[AMD]$/{print $(NF-1)"/"$NF}'
测试:
您几乎只需将字段分隔符设置为空格或正斜杠,然后在匹配行上打印最后两个字段:
awk '$1~/^[AMD]$/{print $(NF-1),$NF}' FS=' |/' OFS='/'
产出将是:
Batch/test.java
Batch/test.java
请告诉我您实际上是先输入了
svn
命令吗?svn log-vhttp://test/svn/Demo/branches/HelloWorld/Batch/ --限制2 | awk'$1~/^[AMD]$/{print$(NF-1),$NF}'FS='|/'OFS='/'
您已经学会了如何提出一个好问题,显示输入、预期输出,您的尝试和给定的输出,但您的评论仍然毫无用处。我能给你的唯一有用的帮助就是试着调试这个问题。这个脚本根据您提供的输入工作,只是您在问题中给出的脚本的一个小修改。检查svn log-v的输出http://test/svn/Demo/branches/HelloWorld/Batch/ --限制2,并确保它是您期望的输出。对不起……我以为您问我在cygwin上运行了什么,因此我直接复制粘贴了它。请确保您正确地使用管道。我直接在日志文件上运行它,并给出您需要的输出。svnlog-vhttp://test/svn/Demo/branches/HelloWorld/Batch/ --限制2 | awk-v FS=“[/]”“$1~/^[AMD]$/{print$(NF-1)”/“$NF}”
——这看起来对吗?
awk '$1~/^[AMD]$/{print $(NF-1),$NF}' FS=' |/' OFS='/'
Batch/test.java
Batch/test.java