以下の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