2013-08-20 3 views
1

Я пытаюсь отфильтровать строки из файлов журналов сервера на основе таких ключевых слов, как ошибка, исключение и т. Д. И покрасить их.Отрицать строку на основе строки, даже если она содержит другую строку, которую я хочу

perl -ne 'print if s/e-business|exception|environment|error/\033[1;31m$&\033[0m/gi' 

Это работает прямо до сих пор, но проблема есть одна конкретная ошибка, которую я хочу, чтобы игнорировать. Скажем, ключевое слово TEST, я могу отрицать его, но эта строка также содержит ошибки, ключевые слова исключений. Я попробовал lookahead и lookbehind, но проблема в ошибке, исключение, TEST не приходят в фиксированные места.

Итак, как я могу проигнорировать строки, содержащие TEST (не переходите к случаю), даже если он содержит другие ключевые слова, которые я хочу?

Примечание: Я уже сделал это в grep, но мне интересно выполнить его в perl.

ответ

3

Просто используйте второй REGEX

print if /error/i and !/test/i 

или что-то подобное.

+0

ах !! он работает :-) Я не уверен, почему, но я пробовал это и раньше, не работал. Благодарю. – vikan