@nEkToSAN

Linux: как выполнить копирование части логов из файла в новый файл по нескольким фильтрам?

Добрый день!
Есть файл с логами Cisco ASA, хранящийся на сервере ubuntu - file.log . Файл не маленький, более 4 гигабайт. Нужно скопировать часть логов в новый файл по нескольким фильтрам:
- все строки, которые включают в себя текст "11.11.11.11/111" (айпи адрес и порт)
- И начало фрагмента должно быть со строк, в которых указано время, допустим с 19:00, а конец - со строками, где указано время 21:00 (короче за определённый промежуток времени).
Я пересмотрел статьи и темы вопросов/ответов на эту тематику (по cut, head, tail, awk и нескольким другим инструментам работы с текстом), но, честно говоря, сложить в уме полную картину как должна выглядеть команда для копирования с заданными фильтрами у меня пока не получается.
Подскажите какой командой это можно выполнить. Или же лучше разбить это на части и выполнить копирование фрагмента сперва по одному фильтру, а потом по другому?
  • Вопрос задан
  • 634 просмотра
Пригласить эксперта
Ответы на вопрос 2
@trypzz
Вам поможет regexp (регулярные выражения), после того, как напишите регулярку, выводите файл -> фильтруете -> результат вывода фильтрации перенаправляете в новый файл. По типу:

grep -e "регулярка" old_file.log > new_file.log
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега Ubuntu
software engineer
почитайте про sed, как раз под вашу ситуацию

sed -n '/19:00,/21:00/{/11.11.11.11\/111/p}' file.log > newfile.log
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы