Получить последние 100 строк журналов


164

Мне нужно получить последние 100 строк журналов из файла журнала. Я попробовал команду sed

sed -n -e '100,$p' logfilename

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


Об этом говорится в руководстве: gnu.org/software/sed/manual/html_node/tail.html#tail , как sed может эмулировать tail.
Ларс Фишер

1
tail -f -n 100 logfilename
Амитеш Бхарти

Ответы:


302

Вы можете использовать команду tail следующим образом:

tail -100 <log file>   > newLogfile

Теперь последние 100 строк будут присутствовать в newLogfile

РЕДАКТИРОВАТЬ:

Более поздние версии tail, упомянутые командой twalberg use:

tail -n 100 <log file>   > newLogfile

17
Обратите внимание, что некоторые более поздние версии tailтребуют синтаксиса tail -n 100 <filename>...
twalberg

14

Посмотрите, скрипт sed, который печатает 100 последних строк, которые вы можете найти в документации по sed ( https://www.gnu.org/software/sed/manual/sed.html#tail ):

$ cat sed.cmd
1! {; H; g; }
1,100 !s/[^\n]*\n//
$p

$ sed -nf sed.cmd logfilename

Для меня это намного сложнее, чем ваш сценарий, так

tail -n 100 logfilename

намного проще И это довольно эффективно, он не будет читать весь файл, если это не нужно. См. Мой ответ с отчетом о страйсе для tail ./huge-file: /unix/102905/does-tail-read-the-whole-file/102910#102910


13

«tail» - это команда для отображения последней части файла, использование правильных доступных ключей помогает нам получить более конкретный вывод. наиболее используемый для меня ключ - это -n и -f

СИНТАКСИС

хвост [-F | -f | -r] [-q] [-b число | -с номером | -n число] [файл ...]

Вот

-n номер: расположение числовых линий.

-f: опция -f заставляет tail не останавливаться при достижении конца файла, а скорее ожидать добавления дополнительных данных к входным данным. Опция -f игнорируется, если стандартным вводом является труба, но не если это FIFO.

Получить последние 100 строк журналов

To get last static 100 lines  
     tail -n 100 <file path>

To get real time last 100 lines
     tail -f -n 100 <file path>

3

Я знаю, что это очень старо, но, кому бы это ни помогло.

less +F my_log_file.log

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

это как VIM для журналов [полностью мое мнение]

оригинальная документация менее: https://linux.die.net/man/1/less

меньше чит-листа: https://gist.github.com/glnds/8862214


1
len=`cat filename | wc -l`
len=$(( $len + 1 ))
l=$(( $len - 99 ))
sed -n "${l},${len}p" filename

первая строка принимает длину (общее количество строк) файла, затем +1 в общем количестве строк, после этого нам нужно собрать 100 записей, поэтому -99 от общей длины, а затем просто положить переменные в команде sed, чтобы получить последние 100 строк из файла.

Я надеюсь, что это поможет вам.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.