Grep ignoriert Leerzeichen

Grep ignoriert Leerzeichen

Ich versuche, eine große Liste von IP-Adressen nach einer bestimmten IP zu durchsuchen, erhalte aber aufgrund von Leerzeichen falsche Ergebnisse. Bitte beachten Sie das folgende Beispiel:

$ 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 ignoriert das Leerzeichen und gibt falsche Ergebnisse zurück. Wie kann ich grep dazu bringen, zu erkennen, dass „1.1 192.168“ nicht gleich „1.1.192.168“ ist?

Antwort1

Gewöhnen Sie sich daran, Ihre Variablen in Anführungszeichen zu setzen. Sie finden keine Übereinstimmung nach

echo "$a" | grep "$ip"

Dies ist keine allgemeine Lösung. Beim nächsten Mal könnte es nur ein Leerzeichen zwischen den IPs geben. Verwenden Sie

ip="1[.]1[.]192[.]168"

Immer noch Probleme, Sie könnten übereinstimmen 101.1.192.168.
Versuchen Sie also die Optionen -Fw

dhecho "$a" | grep -Fw "$ip"

verwandte Informationen