我有一个像这样的表:
Genes Category
1. Gene1 dark_11
2. Gene1 dark_9
3. Gene2 dark_7
4. Gene1 dark_5
我想将列Category
中以逗号分隔的值与相同的行名称合并Genes
以获得如下输出:
Genes Category
1. Gene1 dark_11, dark_9, dark_5
2. Gene2 dark_7
任何帮助将不胜感激。
答案1
您可以使用 awk 数组按要满足的条件进行索引,然后将每个关联的类别附加到数组的每个值,例如:
awk 'NR==1 {print $0}; NR>1 {if(cat[$2])cat[$2]=cat[$2]", "$3; else cat[$2]=$3;}; END{j=1; for (i in cat) print j++".", i, cat[i]}' test.txt
是test.txt
你的输入文件。
该cat
数组将包含两个值,cat[GeneX]
其中将包含一个字符串,其中包含每个基因连接的类别。请注意,在将类别添加到数组的正确值之前,您必须检查数组是否为空,只需在类别之间添加逗号即可。