Хотите найти вхождение в строку "error" в файле журнала, за исключением некоторых строк, в которых есть "error"(мы должны игнорировать эти строки)

Я хочу найти возникновение "ошибки" в файле журнала, используя условие if, и напечатать, что ошибка присутствует в файле журнала. и если не присутствует, то следует напечатать не найдено ошибок. Проблема здесь в моем файле журнала, у меня есть какое-то слово с ошибкой в ​​качестве подстроки, и я хочу игнорировать эти слова, так как они не считаются ошибкой, которую следует учитывать..

Words are :
"LocalErrorPagePolicy"
"ErrorMapping"
"CustomErrorPagePolicy"
"error=ForceYes"

And also i want to avoid one line where error occurs:
Error details may be seen in the file:

И остальные ошибки могут быть учтены.

Любая помощь, высоко ценится!

Я старался grep -v "string" имя файла не работает

1 ответ

Решение

Один (очень грубый) подход заключается в обнаружении всех "ошибок": grep -i "error" FILENAME

Объяснение:

  • -i: Регистр фильтра чувствителен (эквивалент RegEx /i флаг)
  • "error": Фильтр для термина "ошибка"
  • FILENAME: Файл для поиска в

Затем отфильтруйте те, которые вам не нужны:

grep -Eiv "(LocalErrorPagePolicy|ErrorMapping|CustomErrorPagePolicy|error=ForceYes|Error details may be seen in the file:)" FILENAME

Объяснение:

  • -Eiv: Объединение нескольких параметров, эквивалент grep -E -i -v
  • -E: Интерпретировать шаблон как расширенное регулярное выражение (ERE, см. man grep для дополнительной информации)
  • -i: Регистр фильтра чувствителен
  • -v: Инвертировать смысл соответствия, чтобы выбрать несовпадающие строки.

Для шаблона:

  • (): Круглые скобки создают подходящую группу
  • |: Символ канала служит логическим or

Это разбивается на "найти TERM1 ИЛИ TERM2 ИЛИ… ИЛИ TERMX", а затем отбросить строки, в которых эти термины найдены.


Если мы сложим их вместе, мы получим:

grep -i "error" FILENAME | grep -Eiv (LocalErrorPagePolicy|ErrorMapping|CustomErrorPagePolicy|error=ForceYes|Error details may be seen in the file:)"


Чтобы проверить это, я создал очень маленький фиктивный файл:

LocalErrorPagePolicy
ErrorMapping
CustomErrorPagePolicy
error=ForceYes
Error details may be seen in the file:
Stackoverflowerror
I like errors
error error
LocalErrorErrorError
CustomErrorErrorPolicy
error=errorYes
I am a successfully output!

Результат после применения grep -command:

Stackoverflowerror
I like errors
error error
LocalErrorErrorError
CustomErrorErrorPolicy
error=errorYes

Как видите, нежелательные термины были успешно отфильтрованы.

Другие вопросы по тегам