#chr fivep threep strand sample1 sample2 sample3 sample4 name1 name2
chrI 9442 9492 + 0 0 0 0 na na
chrI 12584 12631 + 0 0 0 0 na na
chrI 12584 12679 + 16 16 15 22 na na
chrI 12584 12727 + 0 0 0 0 na na
chrI 12632 12679 + 13 12 16 9 na na
Eu tenho um arquivo no formato acima. Eu quero uma saída de tal forma que eu obtenha 4 arquivos individuais como nome de saída que são basicamente as colunas sample1 , sample2 etc.
Como exemplo, isso é o que eu quero fazer:
awk -v OFS="\t" '{print $1,$2,$3,$9":"$10,$5,$4}' > sample1.txt
awk -v OFS="\t" '{print $1,$2,$3,$9":"$10,$6,$4}' > sample2.txt
awk -v OFS="\t" '{print $1,$2,$3,$9":"$10,$7,$4}' > sample3.txt
awk -v OFS="\t" '{print $1,$2,$3,$9":"$10,$8,$4}' > sample4.txt
Eu posso fazer isso para algumas colunas, mas tenho um arquivo grande com muitas colunas. Como posso fazer isso em um loop para que eu não precise digitar cada instrução awk individualmente
Usando um loop for (
ksh93
,bash
,zsh
):Os campos inicial e final são fornecidos no
for
-loop. O nome do arquivo de saída é extraído da linha de cabeçalho com o sufixo anexado.txt
e o redirecionamento é feito emawk
.