Indagamos por el mundo online y así de esta forma brindarte la respuesta para tu duda, si tienes alguna inquietud déjanos la inquietud y te respondemos sin falta, porque estamos para servirte.
Solución:
Con awk
:
awk 'NFNF-=1;1' out
o:
awk 'NFNF--;1' out
o:
awk 'NF--NF;1' out
Aunque esto parece vudú, funciona. Hay tres partes en cada uno de estos comandos awk.
El primero 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 true si no son 0 o están vacíos string ""
. Por lo tanto, la segunda parte (donde NF
se decrementa) sólo ocurre si NF
no es 0
La segunda parte (ya sea NF-=1
NF--
o --NF
) es simplemente restar 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
reconstruir $0
concatene todos los campos separados por espacios 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 true sin ninguna acción asociada, awk
la acción predeterminada es print $0
.
Usando grep
con PCRE:
$ grep -Po '.*(?=s+[^s]+$)' file.txt
1223 1234 1323 ... 2222
1233 1234 1233 ... 3444
0000 5553 3455 ... 2334
Usando GNU sed
:
$ sed -r 's/(.*)s+[^s]+$/1/' file.txt
1223 1234 1323 ... 2222
1233 1234 1233 ... 3444
0000 5553 3455 ... 2334
Usando Perl:
perl -lane '$,=" ";pop(@F);print(@F)' in
Usando rev
+ cut
:
rev in | cut -d ' ' -f 2- | rev
Reseñas y puntuaciones
Te invitamos a añadir valor a nuestro contenido participando con tu veteranía en las interpretaciones.