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}''