我有一个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
但我不想对每对身份证都手动做。
所以我尝试了这样的方法:
for f in *_n.fasta ; do cat $f *_t.fasta > $f*_prot_all.fasta; done
但这不起作用
因为循环对我来说是新的,所以解决方案可能很简单,但我无法解决它。
此外,我将需要它的pal2nal,我将需要放置2个文件(蛋白质多重比对和DNA序列),它将是相同的工作,2个文件的名称相同的部分,并需要输出一个文件的每对。
发布于 2022-05-08 23:33:34
请您试一下:
#!/bin/bash
for f in *_n.fasta; do
t=${f/_n./_t.}
out=${f/_n./_prot_all.}
cat "$f" "$t" > "$out"
done
其中,t=${f/_n./_t.}
在变量f
中用_t.
替换子字符串_n.
,为其分配一个新的变量t
。至于pal2nal
命令,您可以使用类似的文件名替换。
https://stackoverflow.com/questions/72167938
复制