Shell-Script

如何列印文件名和fasta序列總數?

  • October 27, 2021

我有一個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

我需要列印文件名和fasta序列的總數,如下所示,

test,2
pas,1
cel,3

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

grep ">" test.fasta | wc -l && ls test.fasta

請幫我做同樣的事情。

提前致謝。

這就是(to ount)-c選項的用途:grep``c

$ grep -ce '^>' -- *.fasta
cel.fasta:3
pas.fasta:1
test.fasta:2

請注意,如果只有一個匹配的文件,則不會列印文件名。一些grep實現可以-H選擇強制始終列印文件名:

$ grep -Hce '^>' -- *.fasta
cel.fasta:3

要獲得確切的預期輸出,您只需替換.fasta:,

$ grep -Hce '^>' -- *.fasta | sed 's/\.fasta:/,/'
cel,3
pas,1
test,2

(這裡假設您的文件名不包含其他出現,.fasta:例如my.fasta:foo.fasta;當然,如果輸出是 CSV 格式,文件名中的換行符或,或字元以及可能的空白字元也是一個問題)"

引用自:https://unix.stackexchange.com/questions/667758