Cat / grep apenas as linhas com um único ip

0

Eu tenho um arquivo como este

Script http://127.0.0.1/ blabla
127.0.0.1
Script 127.0.0.2/index.html bla bla
127.0.0.2
Script 127.0.0.3/contact bla bla
Script 127.0.0.4/settings bla bla
127.0.0.4

Eu quero obter apenas as linhas que contêm apenas um único ip e não todas as ips de todas as linhas.

Como posso fazer isso?

os resultados devem ser

127.0.0.1
127.0.0.2
127.0.0.4
    
por Killroy2018 13.06.2018 / 10:37

1 resposta

1

O utilitário cat apenas concatena os dados dados a ele, portanto, não seria muito útil aqui.

Assumindo que está tudo bem ser um pouco desleixado com o que constitui um endereço IP válido :

grep -Ex '([0-9]{1,3}\.){3}[0-9]{1,3}' file

Isso corresponderia e imprimiria quaisquer linhas que correspondessem à expressão regular dada (e descartaria as outras).

Uma solução ainda mais descuidada seria descartar linhas que contenham qualquer coisa além de pontos e dígitos:

grep -v '[^0-9.]' file

Dependendo dos seus requisitos, um deles seria suficiente.

Para uma expressão regular completamente correta (não corresponde a endereços IP inválidos), você pode usar

grep -Ex '((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])' file
    
por 13.06.2018 / 10:44

Tags