我需要提取在提交之間刪除的文件名。我有這樣的命令:從svn日誌中提取已刪除文件的名稱
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'的輸出是什麼,你的期望輸出是什麼? – Inian
你可以顯示'svn log -r 1:30 -v'的一些示例輸出以及你需要的預期輸出嗎?空格是默認分隔符,不需要使用'-F',你可以用'awk'過濾,不需要grep – Sundeep
@Sundeep我編輯了我的問題,我希望現在它更清楚我想做什麼。 –