Хотите найти вхождение в строку "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
Как видите, нежелательные термины были успешно отфильтрованы.