特定の IP を IP アドレスの大きなリストから検索しようとしていますが、スペースのせいで誤検出が発生しています。次の例を検討してください。
$ a="192.168.1.1 192.168.1.2"
$ ip="1.1.192.168"
$ echo $a | grep "$ip"
192.168.1.1 192.168.1.2
Grep はスペースを無視し、間違った結果を返します。「1.1 192.168」が「1.1.192.168」と等しくないことを grep に認識させるにはどうすればよいですか?
答え1
変数を引用符で囲むことに慣れてください。
echo "$a" | grep "$ip"
これは一般的な解決策ではありません。次回はIPの間にスペースが1つだけあるかもしれません。
ip="1[.]1[.]192[.]168"
それでも問題がある場合は、一致する可能性があります101.1.192.168
。
そのため、-Fwオプションを試してください。
つまりecho "$a" | grep -Fw "$ip"