Estou tentando pesquisar uma grande lista de endereços IP para um determinado IP, mas estou recebendo falsos positivos por causa de espaços. Considere o seguinte exemplo:
$ 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 ignora o espaço e retorna resultados errados. Como posso fazer com que o grep reconheça que "1.1 192.168" não é igual a "1.1.192.168"?
Responder1
Acostume-se a citar suas variáveis. Você não encontra uma correspondência depois
echo "$a" | grep "$ip"
Esta não é uma solução geral; da próxima vez, poderá haver apenas um espaço entre os IPs. Usar
ip="1[.]1[.]192[.]168"
Ainda há problemas, você pode corresponder 101.1.192.168
.
Então tente as opções -Fw
ou sejaecho "$a" | grep -Fw "$ip"