grepを実行し、ファイル1のパターンがファイル2に表示される回数を印刷します。

grepを実行し、ファイル1のパターンがファイル2に表示される回数を印刷します。

以下のfile1(私のパターンリスト)があります。

ファイル1

Fatty_acid_degradation
Aminobenzoate_degradation
Amino_sugar_and_nucleotide_sugar_metabolism
Amoebiasis

私はfile2(すべてのパターンリスト)を持っています。

ファイル2

Fatty_acid_degradation
Fatty_acid_degradation
Fatty_acid_degradation
Bacterial_invasion_of_epithelial_cells
Bacterial_invasion_of_epithelial_cells
Bacterial_invasion_of_epithelial_cells
Bacterial_invasion_of_epithelial_cells

file1の各パターンがfile2に表示される回数をgrepして計算し、次のテーブル(タブで区切った)を取得したいと思います。

Fatty_acid_degradation 3

ベストアンサー1

最も簡単な方法は、grep各パターンを数えて計算することです。

$ grep -Fwf file1 file2 | sort | uniq -c
      3 Fatty_acid_degradation

オプションgrep-f、検索するパターンのリストとしてファイルを提供し、パターンを-F正規表現ではなく文字列として扱う必要があることを指定し、パターンが単語全体に一致することを-w確認することです(したがって、反対とregulation_of_expression一致しません)。upregulation_of_excpression

その後、目的のツールを使用してフォーマットを変更できます。

$ grep -Fwf file1 file2 | sort | uniq -c | sed -r 's/.*([0-9]+) *(.*)/\2\t\1/'
$ grep -Fwf file1 file2 | sort | uniq -c | perl -lane 'print "$F[1]\t$F[0]"'
$ grep -Fwf file1 file2 | sort | uniq -c | awk -vOFS="\t" '{print $2,$1}'

上記の項目をすべて返してください。

Fatty_acid_degradation  3

おすすめ記事