awk的正则过滤问题

enlich 2017-09-26 12:22:09
awk '/^([1-9]|[1-9][0-9]|1[01][0-9]|12[0-6])/'

这条命令为什么还是能将127.0.0.1过滤出来?
192.168.179.128
127.0.0.1
...全文
786 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rayw0ng 2017-09-26
  • 打赏
  • 举报
回复
因为最前面的 [1-9] 可以匹配任何非 0 开头的 IP。 如果意图是几种“或”的条件后必须是“.”,可以在“)”的后面加 \.。
enlich 2017-09-26
  • 打赏
  • 举报
回复
谢谢3位的解答。
代码誊写工 2017-09-26
  • 打赏
  • 举报
回复
只要是数字(除0)打头的任何长度字符串(包括第二位起使用非数字)这个正则都匹配。 所以,我问你到底想要啥 IP:从1.0.0.1到255.255.255.255,第1字节和第4字节不允许为0. ^([1-9]|[1-9][0-9]|1[0-9][0-9]|[2][0-4][0-9]|25[0-5])\.(([0-9]|[1-9][0-9]|1[0-9][0-9]|[2][0-4][0-9]|25[0-5])\.){2}([1-9]|[1-9][0-9]|1[0-9][0-9]|[2][0-4][0-9]|25[0-5])$ 除了127.0.0.1的所有IP,awk的正则是绝对办不到的,因为它不支持断言、回溯。 除非只要不匹配127.0.0.1,管它是不是合法ip。
常书 2017-09-26
  • 打赏
  • 举报
回复
[1-9]|[1-9][0-9] 都会匹配127 改成这样就不会匹配127了 awk '/^([1-9]9|1[01][0-9]|12[0-6])/'

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧