Я пытаюсь выполнить поиск определенного 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"