我想使用fastacmd
来提取fasta序列的特定区域。
为此,我需要输入fasta文件的名称-d
,序列-s
的名称以及提取-L
的序列的位置。例如:
fastacmd -d OAP11402.1.fa -s OAP11402.1 -L 50,100
但问题是我有数百个文件(每个文件有一个序列与文件名相同),每个要提取的序列的位置信息都在蛋白质数据库中(info_sequences.txt
)。所以,我想制作一个循环来粘贴文件名,序列和从info_sequences.txt
中的蛋白质数据库fastacmd
中提取的位置。
info_sequences.txt
的外观是这样的:
File seq_id position_start position_end
OAP11402.1.fa OAP11402.1 50 100
OAP15774.1.fa OAP15774.1 75 200
OAP10214.1.fa OAP10214.1 33 310
我认为awk
可能有所帮助,但我正在努力将信息粘贴到fastcmd
答案 0 :(得分:1)
source <(
awk 'NR > 1 {
printf "echo fastacmd -d %s -s %s -L %d,%d\n", $1, $2, $3, $4
}' info_sequences.txt
)
awk命令吐出所有命令
然后source <( ... )
评估当前shell中的命令。
与Cyrus相同的建议,如果看起来没问题,请删除回声
或者,在awk中全部完成:
awk 'NR > 1 {
cmd = "echo fastacmd -d " $1 " -s " $2 " -L " $3 "," $4
system(cmd)
}' info_sequences.txt
答案 1 :(得分:0)
awk 'NR>1 {print "-d",$1,"-s",$2,"-L",$3","$4}' info_sequences.txt | xargs -I {} echo fastacmd {}
输出:
fastacmd -d OAP11402.1.fa -s OAP11402.1 -L 50,100 fastacmd -d OAP15774.1.fa -s OAP15774.1 -L 75,200 fastacmd -d OAP10214.1.fa -s OAP10214.1 -L 33,310
如果一切正常,请删除echo
。