linux - 如何使用 linux 命令提取 ID 和 key ?

标签 linux awk grep

我有与第二列的键值匹配的 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/

相关文章:

linux - 下载包含 css、js、图像的完整网页

linux - sed命令只替换一个文件中的值一次

linux - 如何从子目录的父目录将作业qsub到集群

linux - 十进制值不在 bash 中打印?

bash - 计算 linux 中制表符的数量

linux - 关于 shell 和子 shell

linux - 从文件中随机选择行而不用 Unix 啜饮它

linux - 正则表达式用 SED/AWK 替换特定列

vim - 如何用grep匹配汉字?

linux - 将 grep 搜索从多个文件粘贴到一个新文件