Cat/grep 仅包含单个 ip 的行

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 的行,而不是所有行中的所有 ip。

我怎样才能做到这一点?

结果应该是

127.0.0.1
127.0.0.2
127.0.0.4

答案1

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

相关内容