解析CVS历史输出

时间:2011-03-16 22:12:24

标签: regex cvs

我只需要从CVS获取最新更改列表并解析它们。

示例: CVS用户“Lollerskates”在带有空格的文件中签到。但是空格是分界线!然后使用文件夹名称中的空格检查“skates”文件。

% cvs history -c -a -D 2011-03-14
A 2011-03-15 00:17 +0000 jschmoe      1.1   CoolCode.java                  Awesome/Source/Java/src/com/widgets/foo/ambiguous/abstraction   == <remote>
M 2011-03-15 00:17 +0000 sumbody      1.2   MoreCoolCode.java              Awesome/Source/Java/src/com/widgets/foo/ambiguous/abstraction   == <remote>
A 2011-03-15 00:17 +0000 lollerskates 1.123 This File Name Has Spaces.html Awesome/Source/Java/src/com/widgets/foo/ambiguous/abstraction   == <remote>
A 2011-03-15 00:17 +0000 jschmoe      1.1   MyAwesomeProject.java          Awesome/Source/Java/src/com/widgets/foo/ambiguous/abstraction   == <remote>
M 2011-03-15 00:17 +0000 skates       1.5   BlahBlah.java                  Awesome/Source/Java/src/com/widgets/foo/content/block type/cart == <remote>

什么是可靠的解析方法?

或者,是否有一个不同的CVS命令,其中包含更容易解析的结果?

2 个答案:

答案 0 :(得分:1)

这个正则表达式捕获了所有这些:

\w \d{4}-\d{2}-\d{2} \d{2}:\d{2} \+\d{4} (\w+)\s+(\d+.\d+)\s+([\w\s]+\.\w+)\s+([\w\s/]+)== \<remote\>

用户在组#1中,组#3中的文件名和组#4中的路径。

答案 1 :(得分:0)

在这种情况下,cut可能更好吗?如果字段是固定长度......