Linux, bash, найти регулярное выражение в файле
Имеется файл, содержимое которого является логом работы сторонней программы, файл может быть большим, сотни строк. Необходимо распарсить файл, и если в нем имеется регулярное выражение, например 'some error occured', то выйти с кодом 1.
Думаю сделать так- сначала прочитать файл в переменную: my_log=$(cat log_file.log) а затем как то определить, есть ли в значении переменной my_log данное регулярное выражение. Но не понимаю как.
Ответы (3 шт):
Автор решения: Fonar Siny
→ Ссылка
#!/bin/bash
if [[ -z "${2}" ]]; then
echo "Usage: ${0} pattern file"
exit 2
fi
# Ищем шаблон (первый аргумент скрипта) в файле (второй аргумент):
grep -e "${1}" "${2}" 2>&1 > /dev/null
# В переменной $? будет 0 если шаблон найден и 1 если нет.
# Но нам нужно инвертировать (вернуть 1 если найден, 0 если нет), поэтому:
RC=$(( "${?}" ^ 1 ))
# Готово:
# echo "${RC}"
exit "${RC}"
Автор решения: Ivan
→ Ссылка
Достаточно одного grep:
grep -q 'some error occured' $file_name && exit 1