他のファイルの単語リストに一致する行の抽出

他のファイルの単語リストに一致する行の抽出

私のファイル1には次の行があります。

ATM 1434.972183
BMPR2 10762.78192
BMPR2 10762.78192
BMPR2 1469.14535
BMPR2 1469.14535
BMPR2 1738.479639
BMS1 4907.841667
BMS1 4907.841667
BMS1 880.4532628
BMS1 880.4532628
BMS1P17 1249.75
BMS1P17 1249.75
BMS1P17 1606.821429
BMS1P17 1606.821429
BMS1P17 1666.333333
BMS1P17 1666.333333
BMS1P17 2108.460317
BMS1P17 2108

ファイル2には単語のリストがあります。

ATM
BMS1

したがって、出力は次のようになります。

ATM 1434.972183
BMS1 4907.841667
BMS1 4907.841667
BMS1 880.4532628
BMS1 880.4532628

私はこれが実際に重複した質問であることを知っていますが、すべてのタイプを試してみましたが、grepおそらくこの小さな例を通してあなたに役立ちます。しかし、非常に大きなファイルがあり、sed以前の方法はすべて役に立ちませんでした。awk> 1M lines

file 2この単語を含む部分行を返します。ただし、その中に行と一致する別の単語があります。file 1

ベストアンサー1

grep -Fw -f words myfile

myfileこれにより、ファイルの任意の場所から単語を含む行が抽出されますwords

wordsこのオプションにより、文字列は(正規表現ではなく)固定文字列として扱われ、-Fこの-wオプションを使用すると、まったく同じ文字列を含む行のみを取得できます。言葉(単語内の部分文字列の一致は許可されていません。)単語は、英数字と下線の文字セットの連続した文字シーケンスです。

ファイル内のほとんどの単語はwords別々の行に表示されます。

おすすめ記事