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.20
49.235.113.205