【发布时间】:2017-12-08 22:17:16
【问题描述】:
我有一个 path.text 文件。列由“\t”分隔。
第一列和第二列是这样的:
Y123W AB - CD - ED ...
Y948W ED - WG - SG -EG ...
Y9368 AB - UE ...
Y024W AB - UE ...
YOWB3 AB - CD - ED ...
...
我想将第一列中的元素按第二列中的唯一元素分组。应该是这样的(格式无关紧要):
AB - CD - ED:
Y123W, YOWB3, ...
AB - UE:
Y9368, Y024W, ...
ED - WG - SG -EG:
Y948W, ...
...
我首先尝试将第二列读入数组:
pathways=( $(awk -F"\t" '{print $2}' pathway.txt) )
然后我尝试对路径进行排序以获得独特的路径:
uniq=($(printf "%s\n" "${pathways[@]}" | sort -u))
但是,可能是因为第二列的元素包含空格“”,所以我得到的数组 uniq 是一团糟。
echo "${uniq[@]}"
输出如下:
AB AB AB AB CD CD ...
我是 shell 新手。所以我只是尝试用python或R来一步一步地实现它......请帮助!非常感谢
【问题讨论】:
-
总列数是多少?剩下的列应该如何分组?
-
大约有 200 列。蛋白质(第一列)应该按相应的途径(第二列)分组。 @RomanPerekhrest