Guarda, lo script sed che stampa le ultime 100 righe che puoi trovare nella documentazione di 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
Per me è molto più difficile del tuo copione quindi
tail -n 100 logfilename
è molto molto più semplice. Ed è abbastanza efficiente, non leggerà tutti i file se non è necessario. Vedi la mia risposta con strace report per tail ./huge-file
:https://unix.stackexchange.com/questions/102905/does-tail-read-the-whole-file/102910#102910
Puoi semplicemente usare il seguente comando:-
coda -NUMBER_OF_LINES FILE_NAME
ad esempio tail -100 test.log
- preleverà le ultime 100 righe da test.log
Nel caso, se desideri l'output di quanto sopra in un file separato, puoi reindirizzare come segue:-
coda -NUMBER_OF_LINES FILE_NAME> OUTPUT_FILE_NAME
ad esempio tail -100 test.log > output.log
- preleverà le ultime 100 righe da test.log e le memorizzerà in un nuovo file output.log)
Puoi usare il comando tail come segue:
tail -100 <log file> > newLogfile
Ora le ultime 100 righe saranno presenti in newLogfile
MODIFICA:
Le versioni più recenti di tail come menzionato da twalberg usano il comando:
tail -n 100 <log file> > newLogfile
"tail" è il comando per visualizzare l'ultima parte di un file, l'uso di opzioni disponibili appropriate ci aiuta a ottenere un output più specifico. lo switch più usato per me è -n e -f
SINOSSI
coda [-F | -f | -r] [-q] [-b numero | -c numero | -n numero] [file ...]
Qui
-n numero :la posizione è la linea dei numeri.
-f :L'opzione -f fa in modo che tail non si fermi quando viene raggiunta la fine del file, ma piuttosto attenda l'aggiunta di dati aggiuntivi all'input. L'opzione -f viene ignorata se l'input standard è una pipe, ma non se è un FIFO.
Recupera i log delle ultime 100 righe
To get last static 100 lines
tail -n 100 <file path>
To get real time last 100 lines
tail -f -n 100 <file path>