Как извлечь и отсортировать столбцы из файлов журнала в Linux – CloudSavvy IT
Сортировка файла журнала по определенному столбцу полезна для быстрого поиска информации. Журналы обычно хранятся в виде открытого текста, поэтому вы можете использовать инструменты для работы с текстом в командной строке, чтобы обрабатывать их и просматривать их более читабельно.
Извлечение столбцов с вырезом и awk
cut
а также awk
Утилиты – это два разных способа извлечения столбца информации из текстовых файлов. Оба предполагают, что ваши файлы журнала разделены пробелами, например:
column column column
Это создает проблему, если данные в столбцах содержат пробелы, такие как даты («среда, 12 июня»). Пока cut
Вы можете увидеть это как три отдельных столбца, вы все равно можете извлечь все три из них одновременно, предполагая, что структура вашего файла журнала согласована.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)
cut
очень прост в использовании:
cat system.log | cut -d ' ' -f 1-6
cat
Команда читает содержимое system.log
и трубы это cut
, -d
Флаг указывает разделитель, в данном случае это пробел. (По умолчанию вкладка, t
.) -f
Флаг указывает, какие поля выводить. Эта команда специально напечатает первые шесть столбцов system.log
, Если вы хотите напечатать только третий столбец, вы бы использовали -f 3
флаг.
awk
более мощный, но не такой краткий. cut
полезно для извлечения столбцов, например, если вы хотите получить список IP-адресов из ваших журналов Apache. awk
может переставлять целые строки, что может быть полезно для сортировки всего документа по определенному столбцу. awk
это полный язык программирования, но вы можете использовать простую команду для печати столбцов:
cat system.log | awk '{print $1, $2}'
awk
запускает вашу команду для каждой строки в файле. По умолчанию он разбивает файл на пробелы и сохраняет каждый столбец в переменных. $1
, $2
, $3
, и так далее. Используя print $1
Команда, вы можете напечатать первый столбец, но нет простого способа печати диапазона столбцов без использования циклов.
Одно из преимуществ awk
является то, что команда может ссылаться на всю строку сразу. Содержимое строки хранится в переменной $0
, который вы можете использовать для печати всей строки. Таким образом, вы можете, например, напечатать третий столбец перед печатью оставшейся строки:
awk '{print $3 " " $0}'
" "
печатает пробел между $3
а также $0
, Эта команда повторяет столбец три дважды, но вы можете обойти это, установив $3
переменная в нуль:
awk '{printf $3; $3=""; print " " $0}'
printf
Команда не печатает новую строку. Точно так же вы можете исключить определенные столбцы из вывода, установив их все в пустые строки перед печатью $0
:
awk '{$1=$2=$3=""; print $0}'
Вы можете сделать намного больше с awk
, включая соответствие регулярному выражению, но извлечение столбца из коробки работает хорошо для этого варианта использования.
Сортировка столбцов с сортировкой и уникальным
sort
Команда может быть использована для заказа списка данных на основе определенного столбца. Синтаксис:
sort -k 1
где -k
Флаг обозначает номер столбца. Вы передаете ввод в эту команду, и она выплевывает упорядоченный список. По умолчанию, sort
использует алфавитный порядок, но поддерживает больше опций с помощью флагов, таких как -n
для числовой сортировки, -h
для суффиксной сортировки (1M> 1K), -M
для сортировки сокращений месяцев и -V
для сортировки номеров версий файлов (файл-1.2.3> файл-1.2.1).
uniq
Команда отфильтровывает повторяющиеся строки, оставляя только уникальные. Он работает только для смежных линий (из соображений производительности), поэтому вам нужно всегда использовать его после sort
удалить дубликаты по всему файлу. Синтаксис просто:
sort -k 1 | uniq
Если вы хотите перечислить только дубликаты, используйте -d
флаг.
uniq
также можно посчитать количество дубликатов с помощью -c
флаг, что делает его очень хорошим для отслеживания частоты. Например, если вы хотите получить список самых популярных IP-адресов вашего сервера Apache, вы можете запустить следующую команду на вашем access.log
:
cut -d ' ' -f 1 | sort | uniq -c | sort -nr | head
Эта строка команд вырезает столбец IP-адреса, группирует дубликаты, удаляет дубликаты при подсчете каждого вхождения, затем сортирует их по столбцу подсчета в порядке убывания, оставляя вам список, который выглядит следующим образом:
21 192.168.1.1 12 10.0.0.1 5 1.1.1.1 2 8.0.0.8
Вы можете применить эти же методы к вашим файлам журналов, в дополнение к другим утилитам, таким как awk
а также sed
, чтобы вытащить полезную информацию. Эти цепочечные команды длинные, но вам не нужно вводить их каждый раз, так как вы всегда можете сохранить их в скрипте bash или присвоить им псевдоним через ваш ~/.bashrc
,
Фильтрация данных с помощью grep и awk
grep
очень простая команда; Вы даете ему поисковый термин и передаете его, и он будет выплевывать каждую строку, содержащую этот поисковый термин. Например, если вы хотите найти в вашем журнале доступа Apache 404 ошибки, вы можете сделать:
cat access.log | grep "404"
который выложил бы список записей журнала, соответствующих данному тексту.
Однако, grep
не может ограничить свой поиск определенным столбцом, поэтому эта команда не будет выполнена, если у вас есть текст «404» где-либо еще в файле. Если вы хотите выполнять поиск только в столбце кода состояния HTTP, вам необходимо использовать awk
:
cat access.log | awk '{if ($9 == "404") print $0;}'
С awk
у вас также есть возможность выполнять отрицательные поиски. Например, вы можете искать все записи журнала, которые не возврат с кодом состояния 200 (ОК):
cat access.log | awk '{if ($9 != "200") print $0;}'
а также доступ ко всем программным функциям awk
обеспечивает.
Параметры графического интерфейса для веб-журналов
GoAccess утилита CLI для мониторинга журнала доступа вашего веб-сервера в режиме реального времени и сортировки по каждому полезному полю Он полностью работает в вашем терминале, поэтому вы можете использовать его через SSH, но он также имеет гораздо более интуитивный веб-интерфейс.
apachetop
это еще одна утилита специально для apache, которую можно использовать для фильтрации и сортировки по столбцам в вашем журнале доступа. Он работает в режиме реального времени прямо на ваш access.log.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)