Salva a primeira coluna para o arquivo cujo nome é dado pela segunda coluna

0

Eu tenho um arquivo com 315 linhas e 2 colunas. A primeira coluna é individual e a segunda coluna é o ID da população, assim:

HT170_SD2W-14   HA_16
Q093_MK7-13 HA_25
Q87_MK3-2   HA_21
HT225_KS2A-23R  HA_7
HT256_KS2A-4    HA_7
HT216_SD2A-32   HA_15
ED19_SD1A40-3_357   HA_13

Eu quero extrair os indivíduos que pertencem a cada população e salvá-los para cada população em um arquivo separado para obter algo assim para HA_7:

HT225_KS2A-23R
HT256_KS2A-4

Como posso fazer isso?

    
por Anna1364 27.09.2017 / 21:27

1 resposta

5
$ awk '{ f = "pop-" $2 ".txt" ; print $1 >f }' file

Para a entrada fornecida, isso gerará os seguintes arquivos:

$ ls -l pop-*.txt
-rw-r--r--  1 kk  wheel  18 Sep 28 18:47 pop-HA_13.txt
-rw-r--r--  1 kk  wheel  14 Sep 28 18:47 pop-HA_15.txt
-rw-r--r--  1 kk  wheel  14 Sep 28 18:47 pop-HA_16.txt
-rw-r--r--  1 kk  wheel  10 Sep 28 18:47 pop-HA_21.txt
-rw-r--r--  1 kk  wheel  12 Sep 28 18:47 pop-HA_25.txt
-rw-r--r--  1 kk  wheel  28 Sep 28 18:47 pop-HA_7.txt

$ cat pop-HA_7.txt
HT225_KS2A-23R
HT256_KS2A-4

O programa awk cria o nome do arquivo de saída tomando o segundo campo e acrescentando e anexando bits de nome de arquivo adequados a ele. Em seguida, ele exibe o primeiro campo para esse arquivo.

    
por 27.09.2017 / 21:32