我有一个包含数千行的表格
A GO:0008150,GO:0050789,GO:0050794,GO:0051726,GO:0065007
B GO:0008150,GO:0050789,GO:0050794,GO:0051726,GO:0065007
我想用以下格式解析我的表格。
A GO:0008150
A GO:0050789
A GO:0050794
A GO:0051726
A GO:0065007
B GO:0008150
B GO:0050789
B GO:0050794
B GO:0051726
C GO:0065007
任何帮助将不胜感激。感谢
答案 0 :(得分:1)
使用awk
轻松:只需split()
第二列并循环切片:
$ awk '{n=split($2, a, ","); for (i=1;i<=n;i++) print $1,a[i]}' file
A GO:0008150
A GO:0050789
A GO:0050794
A GO:0051726
A GO:0065007
B GO:0008150
B GO:0050789
B GO:0050794
B GO:0051726
B GO:0065007
答案 1 :(得分:1)
awk
需要多字符RS。
$ awk -v RS=",|\n" 'NF==2{t=$1;$1=$2} {print t,$1}' file
答案 2 :(得分:0)
您可以将Python与re
模块一起使用。
import re
text = '''A GO:0008150,GO:0050789,GO:0050794,GO:0051726,GO:0065007
B GO:0008150,GO:0050789,GO:0050794,GO:0051726,GO:0065007'''
pattern = {
'A': re.compile('A\s+(GO.*)\n'),
'B': re.compile('B\s+(GO.*)\n*')
}
A = 'A ' + '\nA '.join(pattern['A'].findall(text)[0].split(','))
B = 'B ' + '\nB '.join(pattern['B'].findall(text)[0].split(','))
print A
print B
输出:
A GO:0008150
A GO:0050789
A GO:0050794
A GO:0051726
A GO:0065007
B GO:0008150
B GO:0050789
B GO:0050794
B GO:0051726
B GO:0065007