所以我正在尝试编写一个正则表达式,用于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\|>"))
感谢。
答案 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