23 April 2007

remove first lines from a file

head shows the first N lines of a file
tail shows the last N lines of a file.
But what if you want to remove the first N lines of a file? Simply show the last lines of the file startin' from the N+1 line! Ok, the point is that tail has an option like this: simply give the line number to start from just after the plus sign. Exempli gratia:
tail +12 too_much_header_lines.out > just_lines_I_want.out

8 comments:

Edo said...

gawk '{if (NR>12) print $0}' too_long_file.any

hronir said...

Vuoi mettere la semplicita' di un'opzione di tail? :)

Edo said...

sed -e :a -e '$q;N;13,$D;ba'

da sed onelinees.txt

Il bello e' la possibilita' di fare lo stesso lavoro in plurime maniere.

hronir said...

Ok, pero' poi facciamo un gioco: fra due o tre giorni torno a chiederti, a bruciapelo, come si fa ad eliminare le prime N righe da un file, e vediamo se ti ricordi piu' facilmente tail +N+1 oppure sed/gawk... :)

Christian said...

Quando ho visto che c'erano 4 commenti al post di Enzo, senza venire in questa pagina mi sono subito detto: "Sta a vedere che sono una serie di botta e risposta più o meno "saputelli" tra Edo ed Enzo (forse anche il Mau che però interviene un po' meno, di solito) su altri metodi per eseguire la stessa operazione, su quale sia il migliore, il più facile ecc"...

P.S: spero scuserete il "saputelli" ma, visti dall'esterno e con occhio molto profano, non ho trovato aggettivo migliore... :-)

Edo said...

ah ah ah, boia rido! E' vero, sembrano botta e risposta saputellissimi, ma secondo me aiutano a conoscere le grandi potenzialita' delle coreutils + gawk + sed etc etc. Per esempio non sapevo del tail +12 ...

Per tornare alla sfida: la linea con sed non la potrei ricordare mai, ma quella di gawk si, infatti me la sono inventata di sana pianta, senza guardare il manuale.

Per parlare di saputelleria, cercando sulla rete, si puo' trovare il programma bc.sed che fa fare a sed quello che fa bc (An arbitrary precision calculator language), oppure dc (che poi e' la stessa cosa con notazione algebrica o polacca inversa).
Ecco e' qui.

hronir said...

Ecco, per continuare sulla scia di saputelleria e, anzi, cadere financo nella denigrazione: tail +12 potrebbe ricordarselo persino Christian! :P

Christian said...

Considerato che mi ricordo come si chiama tua mamma di cognome, penso di poter "persino" ricordare il gawk... :-)