2016-05-02 11 views
44

Ich muss die letzten 100 Zeilen von Protokollen aus der Protokolldatei abrufen. habe ich versucht, den sed BefehlAbrufen der letzten 100 Zeilen Protokolle

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

Bitte lassen Sie mich wissen, wie kann ich diesen Befehl ändern Sie die letzten 100 Zeilen gezielt abzurufen.

+0

Dies ist in der Anleitung erwähnt: https://www.gnu.org/software/sed/manual/html_node/tail.html#tail, wie sed Schwanz emulieren kann. –

Antwort

80

können Sie tail Befehl wie folgt:

tail -100 <log file> > newLogfile 

Jetzt letzten 100 Zeilen vorhanden sein wird newLogfile

+8

Beachten Sie, dass einige neuere Versionen von 'tail' die Syntax' tail -n 100 '... – twalberg

4

Schauen Sie, das sed-Skript, das die 100 letzten Zeilen druckt können Sie in der Dokumentation für 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 

Für mich ist es Art und Weise schwieriger als das Skript so

tail -n 100 logfilename 

ist viel viel einfacher. Und es ist ziemlich effizient, es wird nicht die ganze Datei lesen, wenn es nicht notwendig ist. Sehen Sie meine Antwort mit Strace-Bericht für tail ./huge-file: https://unix.stackexchange.com/questions/102905/does-tail-read-the-whole-file/102910#102910

Verwandte Themen