他の2つのテキストファイルに基づく大きなテキストファイルから一部のIDを削除します。

他の2つのテキストファイルに基づく大きなテキストファイルから一部のIDを削除します。

次のような大きなテキストファイル(ファイルA)があります。

ID1 ID2 0.2
ID3 ID6 0.4
ID4 ID2 0.6
ID5 ID8 0.8
ID7 ID14    0.4
ID3 ID9 0.6 
ID8 ID10 0.8

2つの異なるテキストファイル(BとC)があり、ファイルBは次のようになります。

ID1
ID2
ID3
ID4
ID5
ID6
ID7

ファイルCは次のようになります。

ID8
ID9
ID10
ID11
ID12
ID13
ID14

最初の2つの列の関連内容は、ファイルBとファイルCの両方に属するファイルAの行だけを保持したいと思います。たとえば、ファイルAの次の行だけが必要です。

ID10 ID3    0.8
ID7 ID14    0.4
ID3 ID9 0.6

ID10とID3はファイルBとCの両方に属するからです。そのような出力を取得する方法を教えてください。

非常にありがとう

ベストアンサー1

ファイルに表示される文字列のファイルと、ファイルgrepに表示される文字列の結果。ABgrepC

$ ( grep -wF -f fileB | grep -wF -f fileC ) <fileA
ID5 ID8 0.8
ID7 ID14    0.4
ID3 ID9 0.6

使用されたオプションgrep

  • -w完全な単語のみを一致させます(一般的ですが非標準オプションです)。ID10grepに一致がない場合は、このオプションを使用してくださいID1
  • -Fパターンを正規表現ではなく文字列として解釈します。
  • -f別のファイルから一致させるパターンを読みます。

おすすめ記事