En el shell, me tubo a awk cuando necesito una columna en particular.
Esto imprime la columna 9, por ejemplo:
... | awk '{print $9}'
¿Cómo puedo saber awk para imprimir todas las columnas incluidas y después de la columna 9, no sólo la columna 9?
En el shell, me tubo a awk cuando necesito una columna en particular.
Esto imprime la columna 9, por ejemplo:
... | awk '{print $9}'
¿Cómo puedo saber awk para imprimir todas las columnas incluidas y después de la columna 9, no sólo la columna 9?
awk -v m="\x01" -v N="3" '{$N=m$N ;print substr($0, index($0,m)+1)}'
Este chuletas de lo que es antes de que el campo dado, nr., N, y se imprime a todo el resto de la línea, incluyendo el campo de nr.N y mantener el original de la separación (no formatear). No mater si la cadena de caracteres del campo aparece también en otro lugar de la línea, que es el problema con Ascherer la respuesta.
Definir una función:
fromField () {
awk -v m="\x01" -v N="$1" '{$N=m$N; print substr($0,index($0,m)+1)}'
}
Y utilizarlo como este:
$ echo " bat bi iru lau bost " | fromField 3
iru lau bost
$ echo " bat bi iru lau bost " | fromField 2
bi iru lau bost
Salida mantiene todo, incluyendo espacios Para N=0, devuelve toda la línea, como es, y para n>NF la cadena vacía
© 2017 Zigzag Horizontal SL
Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.