ファイルを検索して他のファイルの情報が含まれているかどうかを確認する

ファイルを検索して他のファイルの情報が含まれているかどうかを確認する

2つのファイルがあります。最初のものはunip.txt、2番目はですipex.txt。すべてのファイルにはIPアドレスが含まれています。

unip.txt:

49.235.113.205
50.115.166.136
51.15.70.104
51.15.87.74
51.15.134.103
146.148.13.9
148.70.23.131
148.72.212.161
148.216.29.46
149.56.141.193

ipex.txt:

51.15.134.103
148.70.23.131
151.141.0.0
97.89.32.238

デフォルトでは、ファイルを検索してファイルにIPがunip.txt含まれているかどうかを確認する方法を見つけようとします。ipex.txt各行を検索するのはループになりそうですが、どうすればいいかわかりません。

ベストアンサー1

この機能はに内蔵されていますgrep。この-fオプションを使用してください。

grep -Fx -f ipex.txt unip.txt

これにより、すべての一致が印刷されます。はい/いいえ答えにのみ興味がある場合は、オプション-q(「静か」)を使用してください。

if grep -Fxq -x -f ipex.txt unip.txt; then
    echo unip.txt contains IP addresses from ipex.txt
else
    echo "unip.txt doesn't contain IP addresses from ipex.txt"
fi

なぜ-F?デフォルトでは、grepは行をipex.txt正規表現として解釈し、この行のドットは「すべての文字」を意味します。これは間違った一致を引き起こす可能性があります。-F正規表現ではなく定数文字列と一致することを確認してください。

なぜ-x?これにより、IPアドレスがの行全体と一致することを確認して、アドレス一致などのunip.txt部分一致を防ぎます。49.235.113.2049.235.113.205

おすすめ記事