Cat / grep только линии с одним IP

У меня есть файл что-то вроде этого

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 

Я хочу получить только строки, которые содержат только один ip, а не все ips из всех строк.

Как я могу это сделать?

результаты должны быть

 127.0.0.1 127.0.0.2 127.0.0.4 

Утилита cat просто объединяет данные, переданные ей, поэтому она не будет здесь полезной.

Предполагая, что все в порядке с тем, что составляет действительный IP-адрес, это нормально:

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

Это будет соответствовать и печатать любые строки, соответствующие заданному регулярному выражению (и отбрасывать остальные).

Еще более небрежным решением было бы отказаться от строк, содержащих что-либо, кроме точек и цифр:

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

В зависимости от ваших требований, одного из них будет достаточно.

Для полностью правильного регулярного выражения (не совпадающего с недопустимыми IP-адресами) вы можете использовать

 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