我需要有关重组数据集的帮助,以便我可以执行下游分析。我目前正处理蛋白质组学数据,并希望进行比较分析。问题是蛋白质ID。通常,一种蛋白质可以具有多于1个id并且它们被“;
”分开。我需要用不同的蛋白质ID打印相同蛋白质的整个系列。例如: -
输入文件:
tom dick harry jan
a;b;c 1 2 3 4
d;e 4 5 7 3
理想的输出:
tom dick harry jan
a 1 2 3 4
b 1 2 3 4
c 1 2 3 4
d 4 5 7 3
e 4 5 7 3
提前多多感谢
答案 0 :(得分:1)
$ awk 'NR==1{$0="key "$0} {split($1,a,/;/); for (i=1; i in a; i++) { $1=a[i]; print } }' file | column -t
key tom dick harry jan
a 1 2 3 4
b 1 2 3 4
c 1 2 3 4
d 4 5 7 3
e 4 5 7 3
你可以轻而易举地删除单词" key"如果您不喜欢它,请输出,但是恕我直言的有一些列和一些没有标题是一个非常糟糕的主意 - 只是让任何进一步的处理更加困难。
答案 1 :(得分:0)
#!/bin/bash
read header
printf "%4s %s\n" "" "$header"
while true
do
read ids values
for id in $(tr ';' ' ' <<< "$ids")
do
printf "%-4s %s\n" "$id" "$values"
done
done
这会读取标题和打印件(格式略有不同),然后它会读取每一行并为这些行中的每一行打印一行,每行id
给出一行。要查找id
s,ids
字符串将以分号(;
)拆分。