2016-05-02 15 views
44

Potrzebuję pobrać ostatnie 100 wierszy dzienników z pliku dziennika. Próbowałem SED komendyPobierz ostatnie 100 wierszy dzienników

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

Proszę dać mi znać, jak mogę zmienić tego polecenia, aby specjalnie pobrać ostatnich 100 wierszy.

+0

Jest to wymienione w instrukcji: https://www.gnu.org/software/sed/manual/html_node/tail.html#tail, jak sed może emulować ogon. –

Odpowiedz

80

Można użyć polecenia tail następująco:

tail -100 <log file> > newLogfile 

Teraz ostatnie 100 linii będzie obecny w newLogfile

+8

Należy zauważyć, że niektóre nowsze wersje 'tail' wymagają składni' tail -n 100 '... – twalberg

4

Look, sed skrypt, który wyświetla 100 ostatnie wiersze można znaleźć w dokumentacji 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 

Dla mnie jest to droga trudniejsza niż skrypcie tak

tail -n 100 logfilename 

jest znacznie prostszy. I jest dość wydajny, nie będzie czytał wszystkich plików, jeśli nie jest to konieczne. Zobacz moją odpowiedź z raportem strace dla tail ./huge-file: https://unix.stackexchange.com/questions/102905/does-tail-read-the-whole-file/102910#102910