Grepは空白を無視します

Grepは空白を無視します

特定の 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"

関連情報