多くの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 は空白を無視し、誤った結果を返します。 grepに「1.1 192.168」が「1.1.192.168」と等しくないことを認識させる方法は?
ベストアンサー1
変数の引用に慣れてください。それ以降は一致するものが見つかりません。
echo "$a" | grep "$ip"
これは一般的な回避策ではなく、次回はIP間にスペースしかありません。使用
ip="1[.]1[.]192[.]168"
それでも問題があります。一致するものを取得することもできます101.1.192.168
。
-Fwオプションを試してください。
つまりecho "$a" | grep -Fw "$ip"