Мне нужно получить последние 100 строк журналов из файла журнала. Я попробовал команду sed
sed -n -e '100,$p' logfilename
Пожалуйста, дайте мне знать, как я могу изменить эту команду, чтобы специально получить последние 100 строк.
Мне нужно получить последние 100 строк журналов из файла журнала. Я попробовал команду sed
sed -n -e '100,$p' logfilename
Пожалуйста, дайте мне знать, как я могу изменить эту команду, чтобы специально получить последние 100 строк.
Ответы:
Вы можете использовать команду tail следующим образом:
tail -100 <log file> > newLogfile
Теперь последние 100 строк будут присутствовать в newLogfile
РЕДАКТИРОВАТЬ:
Более поздние версии tail, упомянутые командой twalberg use:
tail -n 100 <log file> > newLogfile
tail
требуют синтаксиса tail -n 100 <filename>
...
Посмотрите, скрипт 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
«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>
Я знаю, что это очень старо, но, кому бы это ни помогло.
less +F my_log_file.log
это просто элементарно, с меньшими затратами вы можете делать гораздо более мощные вещи. как только вы начнете просматривать журналы, вы сможете выполнять поиск, переходить к номеру строки, искать шаблон, и многое другое, плюс это быстрее для больших файлов.
это как VIM для журналов [полностью мое мнение]
оригинальная документация менее: https://linux.die.net/man/1/less
меньше чит-листа: https://gist.github.com/glnds/8862214
len=`cat filename | wc -l`
len=$(( $len + 1 ))
l=$(( $len - 99 ))
sed -n "${l},${len}p" filename
первая строка принимает длину (общее количество строк) файла, затем +1 в общем количестве строк, после этого нам нужно собрать 100 записей, поэтому -99 от общей длины, а затем просто положить переменные в команде sed, чтобы получить последние 100 строк из файла.
Я надеюсь, что это поможет вам.