К основному контенту

👨👨👧👧 Как извлечь строки логов определенных дат из файла журнала

Добрый день, ребята.

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

Если вы тот самый специалист, который просматривает тысячи записей в логах между строк в поисках чего-то конкретного, то эта статья подойдет вам лучше всего.

Как извлечь строки логов определенных дат из файла журнала

В этом руководстве мы узнаем, как использовать такие инструменты, как grep, sed, для извлечения строк журнала определенных дат.

Для этого вам нужно открыть файл журнала и проверить формат даты.

Например, в моем случае это пример строки журнала из файла журнала, который мы будем использовать для демонстрации.

Apr 5 08:02:13 amos ntpd[1805]: Soliciting pool server 192.168.206.2

Теперь, когда мы знаем формат даты, приступим к извлечению строк.

Использование grep для извлечения строк из журналов

Для начала давайте рассмотрим примеры использования grep для извлечения строк журнала с конкретными датами из файла логов.

Извлечь события, которые произошли четыре дня назад от текущей даты;

grep "$(date -d '6 day ago' +'%b %d'| sed 's/0//')" test.log...Apr 8 09:22:52 amos ntpd[1805]: Soliciting pool server 192.168.34.2Apr 8 09:22:54 amos ntpd[1805]: Soliciting pool server 192.168.71.138Apr 8 09:22:56 amos ntpd[1805]: Soliciting pool server 192.168.34.2Apr 8 09:22:58 amos ntpd[1805]: Soliciting pool server 192.168.71.138Apr 8 09:23:00 amos ntpd[1805]: Soliciting pool server 192.168.34.2Apr 8 09:23:52 amos ntpd[1805]: Soliciting pool server 192.168.71.138Apr 8 09:22:54 amos ntpd[1805]: Soliciting pool server 192.168.34....

Как вы можете видеть выше, команда date выводит дату и удаляет начальный ноль, чтобы формат даты совпадал с датами в файле журнала.

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

Например, чтобы получить логи от конкретной даты и времени на основе формата даты в файле журнала, например, 8th April, 09:22;

grep "$(date -d '6 day ago' +'%b %d 09:22' | sed 's/0//')" test.log...Apr 8 09:22:52 amos ntpd[1805]: Soliciting pool server 192.168.34.2Apr 8 09:22:54 amos ntpd[1805]: Soliciting pool server 192.168.71.138Apr 8 09:22:56 amos ntpd[1805]: Soliciting pool server 192.168.34.2Apr 8 09:22:58 amos ntpd[1805]: Soliciting pool server 192.168.71.138...

Чтобы получить строки определенного диапазона дат, скажем, с 6 по 7 апреля;

grep -E "Apr 6|Apr 7" test.log...Apr 6 09:12:14 amos ntpd[1805]: Soliciting pool server 192.168.206.2Apr 6 09:12:15 amos ntpd[1805]: Soliciting pool server 192.168.206.2...Apr 7 07:22:52 amos ntpd[1805]: Soliciting pool server 192.168.71.138

Использование sed для извлечения строк из журнала

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

В нашем предыдущем руководстве мы обсуждали, как удалять строки, соответствующие определенному шаблону в файле, используя SED.

Вы можете проверить это, перейдя по ссылке ниже;

? Как удалить строки, соответствующие определенному шаблону в файле, используя SED

Чтобы извлечь строки журнала определенной даты, скажем 6 апреля,

sed -n '/^Apr 6/p' test.logApr 6 07:00:13 amos ntpd[1805]: Soliciting pool server 192.168.206.2Apr 6 07:00:19 amos ntpd[1805]: Soliciting pool server 192.168.206.2..

Извлечь строки журнала определенных диапазонов дат;

sed -n '/^Apr 7/,/^Apr 8/p' test.log...Apr 7 06:10:32 amos ntpd[1805]: Soliciting pool server 192.168.71.138Apr 7 06:10:40 amos ntpd[1805]: Soliciting pool server 192.168.34.2Apr 7 06:10:45 amos ntpd[1805]: Soliciting pool server 192.168.71.138...Apr 8 10:32:54 amos ntpd[1805]: Soliciting pool server 192.168.34.2

Выше, как вы можете видеть, система выводит все строки от указанной первой даты до включая только первую строку указанной последней даты.

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

Например, вывести строки с 7 по 8 апреля;

sed -n '/^Apr 7/,/^Apr 9/{/Apr 9/d; p}' test.log...Apr 7 06:10:32 amos ntpd[1805]: Soliciting pool server 192.168.71.138Apr 7 06:10:40 amos ntpd[1805]: Soliciting pool server 192.168.34.2...Apr 8 10:32:01 amos ntpd[1805]: Soliciting pool server 192.168.71.138Apr 8 10:32:10 amos ntpd[1805]: Soliciting pool server 192.168.34.2

Это всего лишь несколько примеров того, как извлечь строки журнала определенных дат из файла логов с помощью команд sed и grep.

Оставьте свои примеры и предложения в комментариях ниже.

Комментарии


Дистанционная компьтерная помощь, удаленная компьютерная помощь онлайн.

Популярные сообщения из этого блога

Лучшие плагины для OBS Studio

Open Broadcast Software или OBS - это свободное программное обеспечение с открытым исходным кодом для стриминга аудио и видео данных в сеть интернет. Программа полностью кроссплатформенная и может работать в Windows, Linux или MacOS. Это отличная альтернатива для таких программ, как Wirecast и XSplit. OBS использует для вещания стандартный протокол обмена сообщениями в реальном времени, а поэтому может транслировать данные в любой сервис, поддерживающий это, например, Yotube. Несмотря на широкие возможности OBS, программа поддерживает еще и множество плагинов. В этой статье мы рассмотрим лучшие плагины для OBS Studio, которые вы можете использовать. Содержание статьи: Лучшие плагины OBS Studio 1. Browser Source Plugin 2. Video Source Plugin 3. Simple Scene Switcher 4. DirectShow Audio Source 5. CLR Browser Source 6. OBS Remote 7. AMD Advanced Media Framework Encoder 8. Text Source Plugin Выводы Лучшие плагины OBS Studio Чтобы найти плагины OBS Studio для Video пользователям пр…

Лучшие аналоги Paint для Linux

Когда я работал в Windows, я часто использовал стандартную программу редактора изображений Windows - Paint. Не всегда нужен очень и многофункциональный инструмент вроде Photoshop или Gimp. Иногда, чтобы подправить ту или иную картинку, дорисовать на ней несколько фигур или вставить текст достаточно простого, легкого в освоении графического редактора вроде Paint. В Linux таких программ довольно много. В этой инструкции мы рассмотрим лучшие аналоги Paint для Linux. В этот список не будут включены такие программы, как Gimp и Krita, ведь это полнофункциональные графические редакторы, векторные редакторы, такие как Inkscape мы тоже рассматривать не будем. А теперь перейдем к списку. Содержание статьи: KolourPaint MyPaint Gnome Paint XPaint Pinta mtPaint GPaint Rassam-paint Выводы KolourPaint На первом месте в списке аналогов Piant для Linux будет KoloutPaint. Это стандартный графический редактор для окружения рабочего стола KDE. Он поддерживает множество форматов изображений PNG, J…

Подключение OneDrive в Linux

OneDrive (Ранее известный как SkyDrive) это популярное облачное хранилище файлов от Майкрософт. Сейчас OneDrive бесплатно предоставляет 7 гигабайт пространства новым пользователям. Как вы знаете OneDrive хорошо интегрирован с другими продуктами компании  Microsoft. В OneDrive Также есть официальный клиент который автоматически загружает ваши видео и фотографии с камеры в облако. Но к сожалению этот клиент недоступен для операционных систем семейства Linux. Но не все так плохо. Сообщество открытого программного обеспечения уже нашло решение. Это opedrive-d от Boilermaker. Запустившись как демон программа автоматически синхронизирует локальную папку с облаком OneDrive. Содержание статьи: Установка Onedrive-d в Linux Настройка Синхронизация локальной папки с OneDrive Установка Onedrive-d в Linux Несмотря на то что onedrive-d разрабатывается для Ubuntu/Debian, CentOs/Fedora/RHEL поддерживается тоже хорошо. Для установки достаточно набрать несколько команд: $ git clone https://gith…