我有这个文件:
NC_003037.1 453555 454448
NC_007493.2 2279220 2278345
NC_007952.1 1763831 1762950
NC_005791.1 844089 844916
我想遍历每一行以获得变量“ id”,“ column1”,“ column2”,我将在此命令中使用该变量:
efetch -db nuccore -id $id -chr_start $column1 -chr_stop $column2 -format fasta > file.txt
您能在Shell脚本中为我提供一种方法吗?
答案 0 :(得分:0)
看到多列时,请考虑awk
。
rm -f file.txt ; cat inputfile.txt | \
awk '{ print "efetch -db nuccore -id "$1" -chr_start "$2" -chr_stop "$3" -format fasta" }' | \
while read cmd; do $cmd >> file.txt; done
(编辑:将重定向移动到执行中)
awk
组成命令,然后while read cmd ...; done
执行它。
答案 1 :(得分:0)
使用read循环:
while read -r id column1 column2; do
efetch -db nuccore -id "$id" -chr_start "$column1" -chr_stop "$column2" -format fasta
done < file.input > file.txt
> file.txt
,以提高I / O效率相关: