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 は空白を無視し、誤った結果を返します。 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"

おすすめ記事