2016-03-23 3 views
1

Итак, я пытаюсь написать регулярное выражение для использования команды grep в команде статуса SVN. Я хочу, чтобы отображались только файлы с конфликтами, и если это конфликт дерева, дополнительная информация SVN предоставляет об этом (который находится в строке с символом>).Bash: Regex for SVN Conflicts

Итак, вот мое описание того, как SVN выводит строки с конфликтами, а затем я покажу мое регулярное выражение:

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

Это то, что я до сих пор, чтобы попытаться получить правильное регулярное выражение. Вторая часть, после условия ИЛИ, отлично работает, чтобы получить дополнительную конфликтную ситуацию с деревом. Это первая часть, где я пытаюсь получить строки с буквой C в очень специфических условиях.

Во всяком случае, я не очень велика с Regex, поэтому некоторая помощь здесь (плюс объяснение того, что я делаю неправильно, поэтому я могу учиться на этом) было бы здорово.

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

Спасибо.

ответ

2

Это регулярное выражение должно соответствовать вашей линии:

CONFLICTS=$(svn status | grep '^[ADMRCXI?!~ ]\? *C') 
  • ^[ADMRCXI?!~ ]\?: строки, начинающиеся с нуля или одного символа \? статуса ^[ADMRCXI?!~ ]
  • * ноль или более пробелов
  • характер C

Я удалил дополнительную скобку, окружающую замену команды.

+0

'filename' не хочет находиться в этом шаблоне' grep', и вы, вероятно, должны использовать одинарные кавычки (здесь это неважно, но полезно использовать их, когда вам не нужно расширение переменной Я думаю). –

+0

Спасибо за ваш комментарий @EtanReisner. Обновлено. – SLePort

+0

'^ [A-Za-z]' - no-no, вы пропускаете хотя бы некоторые символы из [: punct:] –

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 

Грязная ленивая тяга регулярного выражения

^[enumerate_all_chars_here]{6}C\s