separador print operadores logicos examples columnas campos shell unix awk

shell - print - Quita las primeras columnas y deja intacta la línea restante en awk



awk separador de campos (4)

En realidad, esto se puede hacer con un comando de corte muy simple como este:

cut -f4- inFile

Estoy tratando de usar awk para eliminar los primeros tres campos en un archivo de texto. Eliminar los primeros tres campos es fácil. Pero el resto de la línea se arruina por awk: los delimitadores cambian de tabulador a espacio

Esto es lo que he intentado:

head pivot.threeb.tsv | awk ''BEGIN {IFS="/t"} {$1=$2=$3=""; print }''

Las primeras tres columnas se eliminan correctamente. El problema es que la salida termina con las pestañas entre columnas $ 4 $ 5 $ 6 etc. convertidas en espacios.


Si no desea que se altere la separación del campo, utilice sed para eliminar las primeras 3 columnas:

sed -r ''s/(/S+/s+){3}//'' file

Para almacenar los cambios en el archivo, puede usar la opción -i :

sed -ri ''s/(/S+/s+){3}//'' file


primero como comentó ED, tienes que usar FS como separador de campo en awk. tab convierte en space en su salida, porque no definió OFS .

awk ''BEGIN{FS=OFS="/t"}{$1=$2=$3="";print}'' file

esto eliminará los primeros 3 campos y dejará el resto del texto "intacto" (verá las 3 pestañas delanteras). también en salida se mantendría la <tab> .

awk ''BEGIN{FS=OFS="/t"}{print $4,$5,$6}'' file

saldrá sin espacios / pestañas iniciales. pero si tienes 500 columnas tienes que hacerlo en un bucle, o usar sub función o considerar otras herramientas, cortar, por ejemplo.


awk ''{for (i=4; i<NF; i++) printf $i " "; print $NF}''