Могу ли я использовать переменную в файле .csv в цикле for?

$ sed 's/_[^_]*$/&&/' file         
>13_gnd_gnd
atcg
>14_galF_galF
atgc

Замена sedбудет соответствовать последнему символу подчеркивания в каждой строке и всему, что следует за ним, до конца строки. Это то, что делает шаблон _[^_]*$("соответствует символу подчеркивания, за которым могут следовать другие символы, не являющиеся символами подчеркивания, и конец строки"). Он заменит это (включая подчеркивание) на то, что было сопоставлено дважды (это то, что &&делает в бите замены).

Так как это файл в формате Fasta, а геномные последовательности не могут содержать символы подчеркивания, для >в начале строки не требуется специальной проверки.

1
04.02.2019, 14:51
1 ответ

Вот рефакторинг, который позволяет избежать чтения всего CSV-файла в память и немного упрощает постобработку.

# Use lower case for private variables
# and https://mywiki.wooledge.org/DontReadLinesWithFor
while read -r acc; do 
   curl -s "http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nuccore&id=${acc}&rettype=fasta&retmode=xml" |
   # Run a single awk script for extraction and formatting
   awk -v acc="$acc" '/TSeq_taxid/ {
      sub(/>.*/, ""); sub(/.*</, ""); print acc "\t" $0 }'
done <csvfile
0
27.01.2020, 23:19

Теги

Похожие вопросы