因此,我正在尝试编写一个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