Podívejte se, skript sed, který vytiskne posledních 100 řádků, můžete najít v dokumentaci k 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
Pro mě je to mnohem obtížnější než váš skript, takže
tail -n 100 logfilename
je mnohem jednodušší. A je to docela efektivní, nepřečte všechny soubory, pokud to není nutné. Viz moje odpověď se strace reportem pro tail ./huge-file
:https://unix.stackexchange.com/questions/102905/does-tail-read-the-whole-file/102910#102910
Můžete jednoduše použít následující příkaz:-
ocas – NUMBER_OF_LINES FILE_NAME
např. tail -100 test.log
- načte posledních 100 řádků z test.log
V případě, že chcete výstup výše uvedeného v samostatném souboru, můžete to provést následovně:-
konec – NUMBER_OF_LINES FILE_NAME> OUTPUT_FILE_NAME
např. tail -100 test.log > output.log
- načte posledních 100 řádků z test.log a uloží je do nového souboru output.log)
Příkaz tail můžete použít následovně:
tail -100 <log file> > newLogfile
Nyní bude posledních 100 řádků přítomno v newLogfile
UPRAVIT:
Novější verze ocasu, jak je zmínil twalberg, používají příkaz:
tail -n 100 <log file> > newLogfile
"tail" je příkaz pro zobrazení poslední části souboru, použití vhodných dostupných přepínačů nám pomáhá získat konkrétnější výstup. nejpoužívanější přepínač pro mě je -n a -f
SYNOPSE
ocas [-F | -f | -r] [-q] [-b číslo | -c číslo | -n číslo] [soubor ...]
Zde
-n číslo :Umístění je číselné řady.
-f :Volba -f způsobí, že se tail nezastaví, když je dosaženo konce souboru, ale spíše počká na další data, která budou připojena ke vstupu. Volba -f je ignorována, pokud je standardním vstupem roura, ale ne, pokud se jedná o FIFO.
Načíst protokoly posledních 100 řádků
To get last static 100 lines
tail -n 100 <file path>
To get real time last 100 lines
tail -f -n 100 <file path>