Хвост файла для определенного текста

Есть ли команда Linux, похожая на хвост, где вместо указания нескольких строк вы можете указать строку текста, файл будет искать этот текст из последней строки в первую, а затем отображать все или указанные номера строк после этого ? Содержимое в конце журнала, которое я пытаюсь захватить, может варьироваться от 0 до 10 строк, поэтому, когда это не 10, он делает файл журнала, который я его скопировал, чтобы понять.

С man-страницы tail я вижу возможность указывать только строки или байты.

5 Solutions collect form web for “Хвост файла для определенного текста”

указать строку текста, а затем отобразить все строки после этого

Вот некоторые поддельные данные для игры:

$ seq 100 > input 

… и здесь я ищу строку «90» и отображаю все после нее (до конца файла):

 $ sed -n '/90/,$p' input 90 91 92 93 94 95 96 97 98 99 100 

Если вы хотите более гибкое решение, используйте переменную, измените котировки sed (и уберите $ из оболочки, для sed):

 $ t=96 $ sed -n "/$t/,\$p" input # or $ sed -n /$t/,\$p input 96 97 98 99 100 

Вы можете использовать эту retail команду: https://github.com/mwh/retail

Он поддерживает регулярные выражения для запуска и остановки вывода, поэтому вы, вероятно, хотите что-то вроде:

 retail -r STARTPATTERN mylogfile retail -r STARTPATTERN -u ENDPATTERN -f mylogfile 

Параметр -r явно находит последний экземпляр шаблона, который обычно вы хотите.

См. Также: https://superuser.com/questions/270529/monitoring-a-file-until-a-string-is-found

Вот пример использования журнала ошибок Apache, когда Apache был перезапущен несколько раз, используя retail чтобы извлечь только окончательный перезапуск:

 $ grep -c "Apache.*resuming normal operations" /var/web/logs/error.log 8 $ retail -r "Apache.*resuming normal operations" /var/web/logs/error.log [Wed Jul 6 17:12:55.534567 2016] [mpm_prefork:notice] [pid 17965] AH00163: Apache/2.4.4 (Unix) OpenSSL/1.0.1e configured -- resuming normal operations [Wed Jul 6 17:12:55.534582 2016] [mpm_prefork:info] [pid 17965] AH00164: Server built: Mar 26 2016 12:22:17 [Wed Jul 6 17:12:55.534598 2016] [core:notice] [pid 17965] AH00094: Command line: '/usr/local/apache2/bin/httpd' 

Или вы можете использовать регулярное выражение "(SIGTERM.* shutting down|SIGHUP.*restart)" чтобы показать все после последней попытки завершения или перезапуска.

Если ваш grep имеет флаг -A для отображения определенного количества строк контекста после каждого совпадения, вы можете сделать следующее:

 grep -A 10 'pattern' logfile | less 

Редактор ed имеет возможность поиска назад для предыдущего появления регулярного выражения – и удобно устанавливает свой текущий адрес в последнюю строку файла при открытии. Таким образом, вы могли бы сделать

 ed file ?string?,.p q . ed file ?string?,.p q 

для вывода строк из последнего вхождения string в конец файла (включительно) – или, как однострочный

 printf '?string?,.p\nq' | ed -s file 

Просто для полноты, я буду использовать решение с помощью awk – в то время как вам это не нужно для этой конкретной задачи, это очень мощный инструмент, и это та проблема, которую это хорошо решать.

 awk '/pattern/{x=1}x{print}' 

Это устанавливает переменную x когда шаблон найден и печатает строку всякий раз, когда x является истинным. Обратите внимание, что это начинается с первого появления шаблона.

  • Как связать файл по сети?
  • Может кто-нибудь объяснить мне эту хвост + линию?
  • Можно ли вывести хвост -f в одну строку?
  • Использование команды tail для создания файла
  • хвост -f эквивалент
  • tail -f, но сначала сосать содержимое файла (aka `cat -f`)
  • «Tail -f» в терминале GNOME - прокрутка до предыдущих разрывов строк, если было много последующих выходов
  • Получить последнюю строку вывода `df`
  • Как я могу увидеть весь файл, а также дождаться добавления большего количества данных в этот файл?
  • выходной хвост, когда выполняется другой процесс
  • Хвост - последний файл журнала
  • Interesting Posts

    Kali Linux не загружается с USB-накопителя

    Запуск сценария bash в сценарии bash

    Узнайте, какой процесс находится на переднем плане на bash

    Как оценить циклы / время для завершения GNU ddrescue (1.18.1) с использованием текущего статуса?

    Как установить linux-headers-4.7.0-0.bpo.1-amd64 на Debian?

    конвертировать временную метку в форматированное время OSX

    Удалите вторую строку, где первые несколько столбцов идентичны в большом файле

    NixOS не появляется в Grub (серия Sony Vaio E)

    Какие цветовые коды я могу использовать в своем приглашении PS1?

    Как я могу читать строки за строкой из переменной в bash?

    Потенциальные проблемы (если они есть) при рекурсивной замене пробелов символами подчеркивания во всех именах файлов на жестком диске

    Debian init.d с рабочим демоном C ++, неожиданными результатами

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

    Обновлен с Ubuntu 14.04 до 15.1, и я заканчиваю работу в командной строке при перезагрузке. Что мне теперь делать?

    Ноутбук Dell перегревается и выключается

    Linux и Unix - лучшая ОС в мире.