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.txt
a
答え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