我有以下脚本:
#!/bin/bash
…code setting array ids, etc…
for i in "${!ids[@]}" ; do
echo "#${ids[i]}_${pos[i]}_${wild[i]}_${sub[i]}"
curl -sS "http://www.uniprot.org/uniprot/"${ids[i]}".fasta";
done |
sed '/^>/ d' |
sed -r 's/[#]+/>/g' |
perl -npe 'chomp if ($.!=1 && !s/^>/\n>/)' > $id.pph.fasta
但是结果不会存储在文件中。我可以通过执行以下操作将结果输出到终端并存储在文件中:
./myscript > result.txt
但是我想在脚本中执行此操作并输出到循环外的文件。
答案 0 :(得分:1)
以下是您的脚本的变体:
#!/bin/sh
for i in ${!ids[*]}
do
echo ">${ids[i]}_${pos[i]}_${wild[i]}_${sub[i]}"
curl -Ss www.uniprot.org/uniprot/${ids[i]}.fasta
done |
awk '
/>/ {if (z++) printf RS; print; printf RS; getline; next}
1
END {printf RS}
' ORS= > $id.pph.fasta
答案 1 :(得分:1)
添加
exec 1>result.txt
到脚本的顶部,所有输出都将被重定向。