如何将文件特定列的值粘贴到另一个命令中?
How to paste values of specific columns of a file into another command?
我想用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
中的方法
awk 'NR>1 {print "-d",,"-s",,"-L",","}' 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
。
source <(
awk 'NR > 1 {
printf "echo fastacmd -d %s -s %s -L %d,%d\n", , , ,
}' info_sequences.txt
)
awk命令吐出所有命令
然后 source <( ... )
评估当前 shell.
中的命令
与 Cyrus 相同的建议,如果看起来没问题,请删除 echo
或者,全部在 awk 中完成:
awk 'NR > 1 {
cmd = "echo fastacmd -d " " -s " " -L " ","
system(cmd)
}' info_sequences.txt
我想用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
awk 'NR>1 {print "-d",,"-s",,"-L",","}' 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
。
source <(
awk 'NR > 1 {
printf "echo fastacmd -d %s -s %s -L %d,%d\n", , , ,
}' info_sequences.txt
)
awk命令吐出所有命令
然后 source <( ... )
评估当前 shell.
与 Cyrus 相同的建议,如果看起来没问题,请删除 echo
或者,全部在 awk 中完成:
awk 'NR > 1 {
cmd = "echo fastacmd -d " " -s " " -L " ","
system(cmd)
}' info_sequences.txt