我有一个类似这样的文件
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