Считать сообщения об ошибках в нескольких файлах в день - PullRequest
0 голосов
/ 08 октября 2018

Итак, у меня есть файл журнала, в котором отображаются ошибки | сообщения об ошибках, которые я хочу считать каждый день

cat user.log | grep 'err|error' | wc -l

Дай мне все, что мне нужно, есть ли другие файлы журналов, которые имеют zip, так что

zcat user.log.* | grep 'err|error' | wc -l

также почти там

, так что вот где я застрял, мне нужно проверять каждую проверку файла log.zip, если есть какое-либо сообщение об ошибке сегодняшней даты в нескольких файлах, а также в user.log, которыймой текущий файл собирает ошибки

, поэтому мне нужно проверить более 50 файлов user.log.Z, чтобы подсчитать все строки с сегодняшней датой 8 октября с 00:00:00 до 23:59:59 и мой user.log

Грац заранее

РЕДАКТИРОВАТЬ -------------

solverd с

 DATE=`date "+%b %e"` ;find /var/adm/ ! -path /var/adm/ -prune -name "user.log*" -prune  -mtime -1 -exec zgrep "$DATE" {} \; |grep "user:err|error" |wc -l

1 Ответ

0 голосов
/ 09 октября 2018

Если дата является частью имени файла, добавьте ее (где бы она ни была добавлена ​​logrotate):

zcat -f user.log.* user.log-$(date +%Y-%m-%d).* | grep 'err|error' | wc -l
zcat -f user.log user.log.$(date +%Y-%m-%d).* | grep 'err|error' | wc -l

grep также может рассчитывать, zgrep также может обрабатывать сжатые файлы, поэтому немногокороче:

zgrep -c 'err|error' user.log user.log.$(date +%Y-%m-%d)*

Если дата не является частью имени файла, вам нужно обработать все файлы и отфильтровать все строки с другой датой:

zgrep $(date +%Y-%m-%d) file ... | grep -c 'err|error'
zgrep $(date "+%b  %d") file ... | grep -c 'err|error'

Или используя awk:

# Assumes the date is in the first field, like "2018-10-09 ... err|error ..."
zcat ... | awk 'BEGIN{d=strftime("%Y-%m-%d")}/err\|error/&&$01==d{c++}END{print c}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...