Linux, bash, найти регулярное выражение в файле

Рейтинг: 1Ответов: 3Опубликовано: 27.06.2023

Имеется файл, содержимое которого является логом работы сторонней программы, файл может быть большим, сотни строк. Необходимо распарсить файл, и если в нем имеется регулярное выражение, например 'some error occured', то выйти с кодом 1.

Думаю сделать так- сначала прочитать файл в переменную: my_log=$(cat log_file.log) а затем как то определить, есть ли в значении переменной my_log данное регулярное выражение. Но не понимаю как.

Ответы

▲ 1Принят

cat log_file.log|grep -c 'some error occured'

▲ 0
#!/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}"
▲ 0

Достаточно одного grep:

grep -q 'some error occured' $file_name && exit 1