1

При просмотре файлов журнала Apache появляется много сообщений об ошибках. Я хотел бы узнать, какие сообщения об ошибках наиболее часты, а какие уникальны.

Я хотел бы простой скрипт, который может предоставить мне количество различных уникальных строк.

Я знаю Perl/Python/ и т.д., Но я бы предпочел использовать встроенные инструменты, такие как cut/ find/ grep/ sed и т.д.

Я могу получить простой список записей, используя sed . Ниже приведен список уникальных сообщений об ошибках:

$ sed -e "s/\[.*\]\([^:]*\)\(.*\)/\1/" error.sml.log | sort -u
Apache configured -- resuming normal operations
client denied by server configuration
Digest
File does not exist
request failed

Это работает для подсчета количества вхождений. Это просто не так полезно, так как не показывает, к чему относится число:

$ sed -e "s/\[.*\]\([^:]*\)\(.*\)/\1/" error.sml.log | sort -u | xargs -I{} grep -oc {} error.sml.log
1
3886
2
6091
20

Я хотел бы, чтобы вывод выглядел больше так:

1    Apache configured -- resuming normal operations
3886 client denied by server configuration
2    Digest
6091 File does not exist
20   request failed

1 ответ1

2
sed -e "s/\[.*\]\([^:]*\)\(.*\)/\1/" error.sml.log | sort | uniq -c
      1  Apache configured -- resuming normal operations
   3886  client denied by server configuration
      2  Digest
   6091  File does not exist
     20  request failed

Существует инструмент, который делает именно этот уникальный. Хотел бы я найти это пару часов назад.

Есть несколько полезных опций, таких как uniq -d только показывать строки с более чем 1 записью

$ sed -e "s/\[.*\]\([^:]*\)\(.*\)/\1/" error.sml.log | sort | uniq -cd
   3886  client denied by server configuration
      2  Digest
   6091  File does not exist
     20  request failed

uniq -u показывать только строки uniq только 1 запись

$ sed -e "s/\[.*\]\([^:]*\)\(.*\)/\1/" error.sml.log | sort | uniq -u  
  Apache configured -- resuming normal operations

Теперь я могу обработать наши миллиардные файлы журнала и разобраться в том, что происходит с ними.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .