Bash Grep | awkと他のファイルの結果を印刷する

Bash Grep | awkと他のファイルの結果を印刷する

IPアドレスを含む2つのファイルがあります。

最初のファイル:

192.168.1.1:4.4.4.4
192.168.1.2:4.4.2.2
192.168.1.1:8.8.8.8
4.4.8.8:192.168.1.6
192.168.1.4:4.4.8.8

2番目のファイル:

4.4.2.2
4.4.8.8

これで、ファイル2から各値を取得し、その値がファイル1に存在することを確認するスクリプトが必要です。値がある場合は、ファイル1の行全体を印刷する必要があります。

たとえば、上記の例の予想結果は次のとおりです。

192.168.1.2:4.4.2.2
4.4.8.8:192.168.1.6
192.168.1.4:4.4.8.8

答え1

grep -F -f file2.txt file1.txt

その後、行を読み取ってfile2.txt検索するパターンとして使用しますfile1.txt


2番目の列の一致のみを確認するには、次のawkコマンドを使用できます。

awk -F: 'NR==FNR{a[$0];next}$2 in a' file2.txt file1.txt

その後、各文字列を読み取ってfile2.txt配列()を作成します。次に、列2の値が配列に存在することをa繰り返し確認します。その場合、行全体が印刷されます。file1.txta

答え2

2番目のファイルを繰り返し、最初のファイルでgrepを実行できます。

for pattern in `cat file2.txt` ; do grep $pattern file1.txt ; done

コロンの後の結末だけを一致させたい場合。

for pattern in `cat file2.txt` ; do grep :$pattern$ file1.txt ; done

関連情報