【发布时间】:2015-03-24 03:21:35
【问题描述】:
我有一个制表符分隔的文件A,如下所示:
nameA GO:0005737 细胞质 nameB GO:0005875 微管相关复合物 nameB GO:0005884 肌动蛋白丝 名称C GO:0005737 细胞质 nameC GO:0005856 细胞骨架 nameC GO:0005524 ATP 结合 ..
第一列是基因名称,第二列是 GO id,第三列是该 id 的描述。第一列中的每个标识符可以有一行或多行。
我想创建一个新文件,其中每个基因名称只有一行,所有相关的 GO 术语都在第二列,描述在第三列:
nameA GO:0005737 细胞质 nameB GO:0005875,GO:0005884, 微管相关复合物, 肌动蛋白丝 nameC GO:0005737, GO:0005856, GO:0005524 细胞质、细胞骨架、ATP 结合 ...
...GO id 的顺序遵循描述词的顺序,即每行中的第一个 GO id 对应于第一个描述词。
我尝试获取所有基因名称的唯一列表,然后对每个基因名称运行 for 循环 grepping,删除 GO 列并用逗号替换换行符,然后在末尾添加一个新行。
cut -f1 文件A | uniq > 标识符
用于“猫标识符”中的名称
做
grep "$name" 文件A |切-f2 | tr '\n' ',' | sed 's/$/\n/' >> GOs_collapsed
完成
在此之后,我计划对第三列执行相同的操作,然后使用 paste 将两者与标识符文件放在一起。
但是,上面的这个 bash 脚本不起作用。 GOs_collapsed 中的输出只是一个 GO:s 列表,就像以前一样。
去:0005737 去:0005875 去:0005884 ..
有什么想法吗?
【问题讨论】: