我有一个包含 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
程序通过获取第二个字段并在其前面和后面添加合适的文件名位来创建输出文件名。然后它将第一个字段输出到该文件。