Bash:SVN冲突的正则表达式

时间:2016-03-23 13:38:03

标签: regex bash svn

所以我正在尝试编写一个正则表达式,用于SVN状态命令的grep命令。我只想显示有冲突的文件,如果是树冲突,SVN提供的额外信息(带有>字符的行)。

所以,这是我对SVN如何输出有冲突的行的描述,然后我将展示我的正则表达式:

[Single Char Code][Spaces][Letter "C"][Space]Filename
[Spaces][Letter "C"][Space]Filename
[Letter "C"][Space]Filename

这是我到目前为止尝试获得正确的正则表达式。在OR条件之后,第二部分可以正常工作以使树冲突得到额外的线。这是第一部分,我试图在非常特殊的条件下使用字母C来获取线条。

无论如何,我对正则表达式并不是最好的,所以这里的一些帮助(加上对我做错了的解释,所以我可以从中学习)会很棒。

CONFLICTS=($(svn status | grep "^(.)*C\s\|>"))

感谢。

2 个答案:

答案 0 :(得分:2)

此正则表达式应符合您的行:

CONFLICTS=$(svn status | grep '^[ADMRCXI?!~ ]\? *C')
  • ^[ADMRCXI?!~ ]\?:以零或一个\?状态字符^[ADMRCXI?!~ ]开头的行
  • *零个或多个空格
  • 字符C

我删除了围绕命令替换的额外括号。

答案 1 :(得分:1)

您必须更深入地阅读svn st输出的描述,并尝试至少获得一次树冲突。

我会为你开始的:

> The first seven columns in the output are each one character wide:
>...
>     Seventh column: Whether the item is the victim of a tree conflict
>...
>    'C' tree-Conflicted

并注意:理论上这7列中的任何都可以是非空的

树冲突的状态

 M      wc/bar.c
!     C wc/qaz.c
      >   local missing, incoming edit upon update
D       wc/qax.c

regexp的懒惰草稿

^[enumerate_all_chars_here]{6}C\s