Eu tenho um arquivo que se parece com isso:
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 você pode ver, cada linha tem um número ligeiramente diferente de colunas. Eu quero especificamente a coluna 1, coluna 2, coluna 3, coluna 4 e a coluna que começa comANC=
Saída desejada:
ID101 G T freq=.5 ANC=.1
ID102 A T freq=.3 ANC=.01
ID102 A T freq=.01 ANC=.02
Geralmente uso o comando an awk para analisar arquivos:
awk 'BEGIN {OFS = "\t"} {print $1, $2, $3, $4}'
Existe uma maneira fácil de alterar esse comando para funcionar em situações como essa?
Eu acho que algo assim pode funcionar:
awk '{for(j=1;j<=NF;j++){if($j~/^ANC=/){print $j}}}'
No entanto, como posso editar isso para também imprimir as primeiras colunas?
text-processing
sed
awk
cosmictypist
fonte
fonte
i=5
faz?Supondo que a
ANC=
coluna seja sempre a penúltima coluna (como nos dados de exemplo):NF
é o número de campos (colunas) queawk
divide cada registro (linha).$(NF-1)
é o valor do penúltimo campo.fonte
Breve
$, =>
OFS
@F[0..3]
=>$F[0] $F[1] $F[2] $F[4]
fonte