Sehen Sie, das sed-Skript, das die 100 letzten Zeilen ausgibt, finden 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 viel schwieriger als Ihr Skript, also
tail -n 100 logfilename
ist viel viel einfacher. Und es ist ziemlich effizient, es liest nicht alle Dateien, wenn es nicht notwendig ist. Siehe meine Antwort mit dem Strace-Bericht für tail ./huge-file
:https://unix.stackexchange.com/questions/102905/does-tail-read-the-whole-file/102910#102910
Sie können einfach den folgenden Befehl verwenden:-
tail -NUMBER_OF_LINES FILE_NAME
B. tail -100 test.log
- holt die letzten 100 Zeilen aus test.log
Falls Sie die Ausgabe des Obigen in einer separaten Datei wünschen, können Sie wie folgt leiten:-
tail -NUMBER_OF_LINES FILE_NAME> OUTPUT_FILE_NAME
B. tail -100 test.log > output.log
- holt die letzten 100 Zeilen aus test.log und speichert sie in einer neuen Datei output.log)
Sie können den tail-Befehl wie folgt verwenden:
tail -100 <log file> > newLogfile
Jetzt werden die letzten 100 Zeilen in newLogfile
vorhanden sein
BEARBEITEN:
Neuere Versionen von tail, wie von twalberg erwähnt, verwenden den Befehl:
tail -n 100 <log file> > newLogfile
"tail" ist ein Befehl zum Anzeigen des letzten Teils einer Datei. Die Verwendung geeigneter verfügbarer Schalter hilft uns, eine spezifischere Ausgabe zu erhalten. Die am häufigsten verwendeten Schalter für mich sind -n und -f
SYNOPSIS
Schwanz [-F | -f | -r] [-q] [-b Zahl | -c Zahl | -n Nummer] [Datei ...]
Hier
-n Zahl :Der Ort ist Zahlenzeilen.
-f :Die Option -f bewirkt, dass tail nicht stoppt, wenn das Dateiende erreicht ist, sondern darauf wartet, dass zusätzliche Daten an die Eingabe angehängt werden. Die Option -f wird ignoriert, wenn die Standardeingabe eine Pipe ist, aber nicht, wenn es sich um einen FIFO handelt.
Protokolle der letzten 100 Zeilen abrufen
To get last static 100 lines
tail -n 100 <file path>
To get real time last 100 lines
tail -f -n 100 <file path>