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"