Почему регулярное выражение «egrep -i’ (? = ошибка) ‘ системный журнал | tee errormsg.txt » не работает?

#regex #grep

#регулярное выражение #grep

Вопрос:

Я пытаюсь поместить каждую строку, содержащую ‘Error’ ‘ошибка’ ‘ОШИБКА’ из ‘syslog’ в файл ‘errormsg.txt » Поэтому я использую это

 egrep -i '(?=error)' syslog | tee errormsg.txt
  

Но это не работает. Я получил замечание. Но я почти уверен, что мое регулярное выражение правильное

Комментарии:

1. Используйте perl-regexp с grep -iP помощью .

2. почему вам нужен поиск, а не просто grep -i 'error' ? См. Также: Почему мое регулярное выражение работает в X, но не в Y?

Ответ №1:

попробуйте egrep -i '(.*error.*)' syslog | tee errormsg.txt
и вы всегда можете проверить свое регулярное выражение здесь

Комментарии:

1. Другое дело, если я хочу выделить ошибку, когда я добавляю —color перед -i , это также не работает. Почему?

2. @MIKUVOCALOID верно, кажется, что с этим связано какое-то странное поведение. кстати, я попробовал, и этот шаблон тоже работает и не испортил окраску egrep --color -i 'error'

3. egrep устарело в пользу grep -E so, может быть, это ваша --color проблема?