我有一个包含数百个多FASTA文件的目录 . 这些文件使用物种或属的名称进行调用,例如:
Bubo_bubo.fasta
Poa_CC7849.fasta
Homo_sapiens.fasta
...
在每个文件中, Headers 由Trinity assembler自动生成,看起来与此示例类似:
>c5_g1_i1 len=168 path=[174:0-148 24:148-168]
我想重命名每个文件中的 Headers ,添加有关它来自的物种的信息 . 换句话说, Headers 应该在开头包含文件的名称 . 例如,如果上面的 Headers 来自 Bubo_bubo.fasta
,它应该如下所示:
>Bubu_bubo_c5_g1_i1 len=168 path=[174:0-148 24:148-168]
所以我想编写一个带有文件名的循环,并使用它在这个特定文件的每个fasta头中添加此信息,我想对目录中的所有文件执行此操作 .
1 回答
以下应该为您解决问题:
但是,这会将所有内容写入屏幕,您可能会对使用新文件感兴趣 . 所以你可以使用bash重定向多个文件:
如果你真的想要,你可以用awk本身做所有事情,这将是: