【发布时间】:2021-06-26 06:37:43
【问题描述】:
我有与第二列的键值匹配的 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/'
【问题讨论】:
-
请展示您的尝试
-
I have tried awk but it not working out,您好像忘记添加代码了,请务必添加在 SO 中受到高度鼓励的代码,谢谢。 -
我知道只能用这个命令转换逗号分隔文件中的列 awk -vORS=, '{ print $2 }' Gene.GO | sed 's/,$/\n/'
-
@MathavanMuthaiyan,您的努力没有对错(尝试过的代码),请随时将其添加到您的问题中,非常鼓励您这样做,谢谢。
-
您永远不需要通过管道将 awk 传递给 sed,反之亦然,产生输出而没有终止换行符的脚本是不好的,因为这是下一个工具的未定义行为(所以不要假设您可以添加当您尝试使用 sed 时,稍后换行),并且使用
-vORS=是不必要的,在-v之后放置一个空格,例如-v ORS=,所以它适用于所有 awks。