2012-08-08 11 views
16

Sto elaborando un file con awk e ho bisogno di saltare alcune righe. Internet non ha una buona risposta.come si salta l'ultima riga con awk?

Finora l'unico informazioni che ho è che si può saltare una gamma facendo:

awk 'NR==6,NR==13 {print}' input.file 

O

awk 'NR <= 5 { next } NR > 13 {exit} { print}' input.file 

È possibile saltare la prima linea inserendo:

awk 'NR < 1 { exit } { print}' db_berths.txt 

Come si salta l'ultima linea?

risposta

14

Un modo utilizzando awk:

awk 'NR > 1 { print prev } { prev = $0 }' file.txt 

O meglio con sed:

sed '$d' file.txt 
+8

o 'head -n-1 file.txt' – rwos

+2

@jwos ha provato il tuo suggerimento con la testa, ma ottengo un numero di righe illegali ... – ovatsug25

+3

Il modulo esatto le opzioni di 'head' dipendono dal tuo sistema operativo. Il suggerimento di rwos funziona in Linux, ma non in FreeBSD, OpenBSD, OS/X. Probabilmente non funziona anche in Solaris, HP/UX, ecc. – ghoti

-3

si può provare:

awk 'END{print NR}' file 
+1

-1 questo stamperà come molte righe nel file di input. completamente diverso dal requisito dell'OP – Kent