如何打印文件名和fasta序列总数?

Kum*_*mar 0 python shell-script bioinformatics

我有一个 fasta 文件,即 test.fasta、pas.fasta、cel.fasta 如下所示

test.fasta
>tile
ATGTC
>259
TGAT

pas.fasta
>ta
ATGCT

cel.fasta
>787
TGTAG
>yog
TGTAT
>In
NNTAG
Run Code Online (Sandbox Code Playgroud)

我需要打印文件名和 fasta 序列总数,如下所示,

test,2
pas,1
cel,3
Run Code Online (Sandbox Code Playgroud)

我使用了以下命令但未能达到我的目的

grep ">" test.fasta | wc -l && ls test.fasta
Run Code Online (Sandbox Code Playgroud)

请帮助我做同样的事情。

提前致谢。

Sté*_*las 6

这就是(to ount)-c选项的用途:grepc

$ grep -ce '^>' -- *.fasta
cel.fasta:3
pas.fasta:1
test.fasta:2
Run Code Online (Sandbox Code Playgroud)

请注意,如果只有一个匹配文件,则不会打印文件名。某些grep实现可以选择-H强制始终打印文件名:

$ grep -Hce '^>' -- *.fasta
cel.fasta:3
Run Code Online (Sandbox Code Playgroud)

要获得确切的预期输出,您只需替换.fasta:,

$ grep -Hce '^>' -- *.fasta | sed 's/\.fasta:/,/'
cel,3
pas,1
test,2
Run Code Online (Sandbox Code Playgroud)

(这里假设您的文件名不包含其他出现的情况,.fasta:例如my.fasta:foo.fasta; 当然,如果输出采用 CSV 格式,文件名中的换行符或,或字符以及潜在的空白字符也会成为问题)"