2番目のファイルのリストに基づいてファイル行をフィルタリングする

2番目のファイルのリストに基づいてファイル行をフィルタリングする

file1.tabular「要素」情報列が3つ以上含まれています。

element1 235 oval red \
element2 334 oval red \
element3 356 rectangular blue

file2.txt単一の列を含みます。

element1\
element3

file1.tabularフィルタリングして別の名前で保存したいですfile3.tabular。これには要素のみが含まれますが、たとえば、file2.txt3つの情報列はすべて含まれます。file1.tabular

element1 235 oval red\
element3 356 rectangular blue

Ubuntuでこの問題を解決するコマンドはありますか?専門家の助けに感謝します。ありがとう

ベストアンサー1

あなたは探しているかもしれません

grep -f file2.txt file1.tabular > file3.tabular

この-fオプションは、grep読者にその中のパターンを見つけるように指示しますfile2.txt。検索をに適用し、file1.tabular出力をにリダイレクトしますfile3.tabular

\ファイルに真の「行連続」エスケープ(すべての行の終わり)がないとします。


注:正規表現ベースの検索と同様に、コンテンツを整理するときは注意が必要ですfile2.txt

  • 文字通り一致させる正規表現特殊文字はエスケープする必要があります。
  • また、部分一致(たとえば、内の単語の部分文字列のみが一致するパターン)もデフォルトgrepで表示されます。file1.tabularこれを軽減するには、-wスイッチを使用して「フルワード」一致のみを許可できます。

おすすめ記事