【问题标题】:Extract names of deleted files from svn log从 svn 日志中提取已删除文件的名称
【发布时间】: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 我编辑了我的问题,我希望现在更清楚我想要做什么。

标签: svn awk grep


【解决方案1】:

不需要grep,你可以使用awk来实现grep可以做的事情。 使用/ D/ 过滤包含D 的行

您可以使用awk 从 6 开始打印$0 的子字符串(这是您所需模式的起点)

$ svn log -r 28:30 -v | awk '/ D/{print substr($0,6)}'

或者您可以使用sub(/[^/]*/ 过滤掉non-/

$ svn log -r 28:30 -v | awk '/ D/{sub(/[^\/]*/,"",$0);print $0}'

【讨论】:

  • 谢谢,它完美运行。我知道这会是一种更简单的方法。
  • 很高兴它可以提供帮助。然后可能会接受或投票。 :)
  • 现在我注意到你在第二个命令中有一个错误。您忘记转义字面斜线。 $ svn log -r 28:30 -v | awk '/D/{sub(/[^\/]*/,"",$0);print $0}'
  • [ ] 之间的斜线允许不前置反斜线。第二个命令在这里工作正常。
  • 我收到此错误:awk:第 1 行:正则表达式编译失败(错误的类 -- []、[^] 或 [)[^ awk:第 1 行:在或附近出现语法错误] awk : 第 1 行:失控的正则表达式 /,"",$0);pr ...,如果我不转义“/”。如果我转义斜线“\/”,那么工作正常。我在 Ubuntu 16.04 上试过
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-22
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多