2012-08-08 16 views
16

Estoy procesando un archivo con awk y necesito omitir algunas líneas. Internet no tiene una buena respuesta.¿cómo se salta la última línea w/awk?

Hasta ahora la única información que tengo es que se puede omitir una gama haciendo:

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

O

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

Puede omitir la primera línea ingresando:

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

¿Cómo se salta la última línea?

Respuesta

14

Una forma usando awk:

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

O mejor con sed:

sed '$d' file.txt 
+8

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

+2

@jwos intenté tu sugerencia con la cabeza pero recibí un recuento de líneas ilegales ... – ovatsug25

+3

La forma exacta Las opciones de 'head' depende de su sistema operativo. La sugerencia de rwos funciona en Linux, pero no en FreeBSD, OpenBSD, OS/X. Probablemente tampoco funcione en Solaris, HP/UX, etc. – ghoti

-3

que puede probar:

awk 'END{print NR}' file 
+1

-1 esto imprimirá cómo muchas líneas en el archivo de entrada. completamente diferente del requisito de OP – Kent

Cuestiones relacionadas