Bash:针对SVN冲突的Regex



因此,我正在尝试编写一个regex,用于SVN状态命令上的grep命令。我只想显示有冲突的文件,如果是树冲突,SVN会提供有关它的额外信息(位于带有>字符的行上)。

因此,以下是我对SVN如何输出有冲突的行的描述,然后我将显示我的正则表达式:

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

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

无论如何,我在Regex并不是最棒的,所以在这里提供一些帮助(再加上解释我做错了什么,这样我就可以从中吸取教训)会很棒。

CONFLICTS=($(svn status | grep "^(.)*Cs|>"))

谢谢。

此正则表达式应与您的行匹配:

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

我去掉了命令替换的多余括号。

您必须更深入地阅读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}Cs 

最新更新