我正在使用fasta文件,並且需要爲每個標題添加行特定文本。因此,例如,如果我的文件是:使用while循環替換fasta文件中的某些行,並使用while循環和if/else語句
>TER1
AGCATGCTAGCTAGTCGACTCGATCGCATGCTC
>TER2
AGCATGCTAGCTAGACGACTCGATCGCATGCTC
>URC1
AGCATGCTAGCTAGTCGACTCGATCGCATGCTC
>URC2
AGCATGCTACCTAGTCGACTCGATCGCATGCTC
>UCR3
AGCATGCTAGCTAGTCGACTCGATGGCATGCTC
我想要一個while循環,將讀取每一行;對於開頭爲>
的人,我想追加|population:
加上>
後面的前三個字符。所以線之一將是:
>TER1|population:TER
等
我無法弄清楚如何使這項工作。這是迄今爲止我的最佳嘗試。
filename="testfasta.fa"
while read -r line
do
if [[ "$line" == ">"* ]]; then
id=$(cut -c2-4<<<"$line")
printf $line"|population:"$id"\n" >>outfile
else
printf $line"\n">>outfile
fi
done <"$filename"
這會生成一個文件,其中包含原始標題和每行下一行。 有人能告訴我我哪裏出錯了嗎?我的if和else循環根本不起作用! 謝謝!
我已經編輯了您的代碼塊並刪除了空行,因爲我認爲您只是將它們放在那裏以獲得換行符,對不對?此外,您的循環對我來說也是如此。 –
是Benjamin W.謝謝!我如何刪除空行? – user2414840
對於正確的代碼塊,您必須縮進四個空格。選擇要編碼的代碼並使用{}按鈕或按下Ctrl-K。在代碼塊中,符合換行符。 –