将第一列保存到其名称由第二列指定的文件中

将第一列保存到其名称由第二列指定的文件中

我有一个包含 315 行和 2 列的文件。第一列是个体,第二列是群体 ID,如下所示:

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

我想提取属于每个群体的个体,并将它们保存在一个单独的文件中,以获得 HA_7 的类似信息:

HT225_KS2A-23R
HT256_KS2A-4

我怎样才能做到这一点?

答案1

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

对于给定的输入,这将生成以下文件:

$ 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

awk程序通过获取第二个字段并在其前面和后面添加合适的文件名位来创建输出文件名。然后它将第一个字段输出到该文件。

相关内容