Tengo un archivo que se parece a esto:
ID101 G T freq=.5 nonetype ANC=.1 addinfor
ID102 A T freq=.3 ANC=.01 addinfor
ID102 A T freq=.01 type=1 ALT=0.022 ANC=.02 addinfor
Como puede ver, cada línea tiene un número ligeramente diferente de columnas. Quiero específicamente la columna 1, la columna 2, la columna 3, la columna 4 y la columna que comienza conANC=
Salida deseada:
ID101 G T freq=.5 ANC=.1
ID102 A T freq=.3 ANC=.01
ID102 A T freq=.01 ANC=.02
Generalmente uso el comando awk para analizar archivos:
awk 'BEGIN {OFS = "\t"} {print $1, $2, $3, $4}'
¿Hay una manera fácil de alterar este comando para trabajar en situaciones como esta?
Creo que algo como esto podría funcionar:
awk '{for(j=1;j<=NF;j++){if($j~/^ANC=/){print $j}}}'
Sin embargo, ¿cómo puedo editar esto para imprimir también las primeras columnas?
text-processing
sed
awk
cosmictypist
fuente
fuente
i=5
hacer?Suponiendo que la
ANC=
columna es siempre la penúltima columna (como en los datos de ejemplo):NF
es el número de campos (columnas) queawk
divide cada registro (línea) en.$(NF-1)
es el valor del penúltimo campo.fuente
Breve
$, =>
OFS
@F[0..3]
=>$F[0] $F[1] $F[2] $F[4]
fuente