我在一個目錄中有 100 多個 fasta 檔案:
A_n.fasta
A_t.fasta
B_n.fasta
B_t.fasta
C_n.fasta
C_t.fasta
...
Fasta 檔案包含不同數量的序列,我需要為每一對將它們放在一起:
input A_n.fasta, A_t.fasta output A_nt.fasta ....
我對每一對都這樣做:
cat A_n.fasta A_t.fasta > A_nt.fasta
但我不想為每個 id 對手動執行此操作。
所以我嘗試了這樣的事情:
for f in *_n.fasta ; do cat $f *_t.fasta > $f*_prot_all.fasta; done
但它不作業
for 回圈對我來說是新的,所以解決方案可能很簡單,但我無法解決。
此外,我將需要它用于 pal2nal,我需要放置 2 個檔案(蛋白質多重比對和 DNA 序列),這將是相同的作業,2 個具有相同名稱部分的檔案,并且需要為每一對輸出一個檔案.
uj5u.com熱心網友回復:
請你試試:
#!/bin/bash
for f in *_n.fasta; do
t=${f/_n./_t.}
out=${f/_n./_prot_all.}
cat "$f" "$t" > "$out"
done
where用變數中t=${f/_n./_t.}的子字串替換_n.為它分配一個新變數。至于命令,您可以使用檔案名的類似替換。_t.ftpal2nal
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/471550.html
上一篇:在shell腳本中查找多個字串
