Отримайте останні 100 журналів рядків


164

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

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

Будь ласка, дайте мені знати, як я можу змінити цю команду, щоб конкретно отримати останні 100 рядків.


Про це йдеться в посібнику: gnu.org/software/sed/manual/html_node/tail.html#tail , як sed може імітувати хвіст.
Ларс Фішер

1
хвост -f -n 100 логінфайлів
Amitesh Bharti

Відповіді:


302

Ви можете використовувати хвостову команду наступним чином:

tail -100 <log file>   > newLogfile

Зараз останні 100 рядків будуть присутні в newLogfile

Редагувати:

Більш пізні версії хвоста, як згадує команда використання twalberg :

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

"хвіст" - це команда для відображення останньої частини файлу, використання належних доступних комутаторів допомагає нам отримати більш конкретний вихід. найбільш використовуваний для мене перемикач - -n і -f

СИНОПИС

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

Ось

-n номер: Місце розташування - це рядки з номерами.

-f: Опція -f змушує хвіст не зупинятися після досягнення кінця файлу, а швидше чекати, коли до вводу додаються додаткові дані. Параметр -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.