我不确定是否可以使用unix命令执行此操作,或者我需要更复杂的代码,例如python。
我有一个包含3列的大输入文件 - id,不同的序列(第二列)分组在不同的组中(第3列)。
Seq1 MVRWNARGQPVKEASQVFVSYIGVINCREVPISMEN Group1
Seq2 PSLFIAGWLFVSTGLRPNEYFTESRQGIPLITDRFDSLEQLDEFSRSF Group1
Seq3 HQAPAPAPTVISPPAPPTDTTLNLNGAPSNHLQGGNIWTTIGFAITVFLAVTGYSF Group20
我想: 根据组ID拆分此文件,并为每个组创建单独的文件;编辑每个文件中的信息,添加">"在id的开头签名;然后为序列
创建一个新行Group1.txt file
>Seq1
MVRWNARGQPVKEASQVFVSYIGVINCREVPISMEN
>Seq2
PSLFIAGWLFVSTGLRPNEYFTESRQGIPLITDRFDSLEQLDEFSRSF
Group20.txt file
>Seq3
HQAPAPAPTVISPPAPPTDTTLNLNGAPSNHLQGGNIWTTIGFAITVFLAVTGYSF
我该怎么做?
答案 0 :(得分:2)
AWK会做到这一点:
awk '{ print ">"$1 "\n" $2 >> $3".txt"}' input.txt
答案 1 :(得分:1)
这个shell脚本可以解决这个问题:
#!/usr/bin/env bash
filename="data.txt"
while read line; do
id=$(echo "${line}" | awk '{print $1}')
sequence=$(echo "${line}" | awk '{print $2}')
group=$(echo "${line}" | awk '{print $3}')
printf ">${id}\n${sequence}\n" >> "${group}.txt"
done < "${filename}"
其中data.txt
是包含原始数据的文件的名称。
重要的是,在运行脚本之前,组文件不应该存在。