2013-03-14 3 views
2

Мне нужно проверить, находится ли какая-либо из строк «Добавлено/Изменена/Исправлена ​​/ Удалена» в сообщении журнала фиксации. Я пишу svn precommit hook, и ожидаемый комментарий коммита должен содержать одну из этих 4 строк в сообщении.grep для нескольких строк в одной строке

код я использую как ниже

REPOS=$1 
TXN=$2 

SVN="/usr/bin/svn"; 
SVNLOOK="/usr/bin/svnlook"; 

$SVNLOOK log "$REPOS" -t "$TXN" | \ 
grep "[a-zA-Z0-9]" > /dev/null 

GREP_STATUS=$? 
if [ $GREP_STATUS -ne 0 ] 
then 
    "${ECHO}" "No Log comments present" >> "${LOG}" 
    echo "Your commit has been blocked because you didn't give any log message" 1>&2 
    echo "Please write a log message describing the purpose of your changes and" 1>&2 
    echo "then try committing again. -- Thank you" 1>&2 
exit 1 
fi 

В приведенном выше коде,

$SVNLOOK log "$REPOS" -t "$TXN" 

даст мне сообщение фиксации, что пользователь вошел. Теперь я должен проверить наличие в сообщении любой из строк «Добавлено, изменено, исправлено, удалено». То есть,

if (any of the above 4 strings are not present), 
exit 1 

Я попытался с

$($SVNLOOK log -t "$TXN" "$REPOS" | grep -q "Added\|Changed\|Fixed\|Deleted"|) 

, но это не похоже, работает.

+1

не очень полезным диагностические, просьба представить минимальный пример, который демонстрирует проблему. – Thor

ответ

4

б чередования вам нужно Extended Regexp:

grep -qE 'Added|Changed|Fixed|Deleted' 

Или: «Не похоже, чтобы работать»

egrep -q 'Added|Changed|Fixed|Deleted' 
+0

Используется первый. Это сработало. Благодаря! – ramz

4

Удалить обратный слэш и использовать egrep Я также рекомендую -i для случая нечувствительного соответствия:

egrep -q -i "added|changed|fixed|deleted" 
+1

'-e'! =' -E' и выполнение нечувствительного к регистру совпадения может приводить к ложным срабатываниям. –

8

Используйте grep -e вариант (несколько раз), как это:

grep -e Added -e Changed -e Fixed -e Deleted 

иначе перейти на маршрут регулярных выражений:

grep --regexp=Added|Changed|Fixed|Deleted 

 Смежные вопросы

  • Нет связанных вопросов^_^