我有与第二列的键值匹配的 ID 列表,我想删除重复项并将相应的值保留为逗号或冒号分隔,如输出格式所示 输入文件
TRINITY_DN728479_c0_g1_i1 GO:0003674
TRINITY_DN728479_c0_g1_i1 GO:0003824
TRINITY_DN728479_c0_g1_i1 GO:0003887
TRINITY_DN728480_c0_g1_i1 GO:0003891
TRINITY_DN728480_c0_g1_i1 GO:0003892
我想要输出
TRINITY_DN728479_c0_g1_i1 GO:0003674, GO:0003824, GO:0003887
TRINITY_DN728480_c0_g1_i1 GO:0003891,GO:0003892
我试过 awk,但没有成功
awk -vORS=, '{ print $2 }' Gene.GO | sed 's/,$/\n/'
最佳答案
如果输入是 2 列并且已经按第 1 列分组
awk '
{
printf "%s", ($1==p ? "," $2 : ors $0)
ors = ORS
p = $1
} END {printf "%s", ors}' file
关于linux - 如何使用 linux 命令提取 ID 和 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68139874/