Con awk
:
awk 'NF{NF-=1};1' <in >out
o:
awk 'NF{NF--};1' <in >out
o:
awk 'NF{--NF};1' <in >out
Aunque esto parece vudú, funciona. Hay tres partes en cada uno de estos comandos awk.
La primera es NF
, que es una condición previa para la segunda parte. NF
es una variable que contiene el número de campos en una línea. En AWK, las cosas son ciertas si no son 0 o una cadena vacía ""
. Por lo tanto, la segunda parte (donde NF
se disminuye) solo ocurre si NF
no es 0.
La segunda parte (ya sea NF-=1
NF--
o --NF
) está restando uno de la NF
variable. Esto evita que se imprima el último campo, porque cuando cambia un campo (eliminando el último campo en este caso), awk
reconstruya $0
, concatene todos los campos separados por espacio de forma predeterminada. $0
ya no contenía el último campo.
La parte final es 1
. No es mágico, solo se usa como una expresión que significa true
. Si una awk
expresión se evalúa como verdadera sin ninguna acción asociada, la awk
acción predeterminada es print $0
.