【发布时间】:2017-08-08 09:09:44
【问题描述】:
我需要提取在提交之间被删除的文件名。我有这个命令:
svn log -r 1:30 -v | grep ' D ' | awk -F ' ' '{print $2}'
对于这个命令
svn log -r 28:30 -v
输出是:
r28 | admin | 2017-08-08 10:02:03 +0000 (Út, 08 srp 2017) | 1 line
Changed paths:
D /smartsvn-linux-9_2_1.tar.gz
Remove test file 1
------------------------------------------------------------------------
r29 | admin | 2017-08-08 10:02:21 +0000 (Út, 08 srp 2017) | 1 line
Changed paths:
D /smartsvn-linux-9_2_1 (copy).tar.gz
Remove test file 2
------------------------------------------------------------------------
r30 | admin | 2017-08-08 10:02:52 +0000 (Út, 08 srp 2017) | 1 line
Changed paths:
D /testfile.txt
Remove testing file 3
对于这个命令:
svn log -r 28:30 -v | grep ' D '
输出是:
D /smartsvn-linux-9_2_1.tar.gz
D /smartsvn-linux-9_2_1 (copy).tar.gz
D /testfile.txt
我想从那个输出中得到一个没有字母 D 的输出:
/smartsvn-linux-9_2_1.tar.gz
/smartsvn-linux-9_2_1 (copy).tar.gz
/testfile.txt
它几乎可以正常工作,但如果文件名包含空格,它就不起作用。我明白为什么会这样,但我不知道如何解决它。还是有更好的方法,我该怎么做?
编辑:同时我解决了我的问题,但我确定它是垃圾。它有效,但我确信它存在更好的方式。我只会使用 grep 或 egrep,但我不知道 grep 或 egrep 是否支持组。
svn log -r 1:30 -v | grep ' D ' | egrep '/([a-zA-Z_.0-9\-\(\) -]+)$' -o
【问题讨论】:
-
svn log -r 1:30 -v的输出是什么,您的预期输出到底是什么? -
您能否展示一些
svn log -r 1:30 -v的示例输出以及您需要的预期输出?空格是默认分隔符,不需要使用-F,你可以使用awk过滤,不需要grep -
@Sundeep 我编辑了我的问题,我希望现在更清楚我想要做什么。