ファイル名と fasta シーケンスの総数を印刷するには?

ファイル名と fasta シーケンスの総数を印刷するには?

以下のように、test.fasta、pas.fasta、cel.fastaという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

私もそうするのを手伝ってください。

よろしくお願いします。

ベストアンサー1

(to ununt)-cオプションの用途は次のとおりです。grepc

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

一致するファイルが1つしかない場合、ファイル名は印刷されません。一部の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形式の場合、ファイル名の改行または文字、および,潜在的な空白文字も問題になる可能性があります。)"

おすすめ記事