如何查找特定范围内的所有IP地址?

时间:2014-04-09 10:39:38

标签: regex linux

我试图以这种格式在Linux(所有文件)中查找所有IP地址:

192.168.X.X

X从0到255。

我试过了:

grep -E –r -n '(192)\.(168)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' .

它正常工作......但是,它也通过忽略最后的0来给出这个IP地址:192.168.X.260为192.168.X.26。

我该怎么做才能解决这个问题?

感谢。

2 个答案:

答案 0 :(得分:4)

  

我该怎么做才能解决这个问题?

您应该使用可以执行比较的工具:

awk -F. '$1==192 && $2==168 && $3>=1 && $3<=255 && $4>=1 && $4<=255' inputfile

编辑:正如评论中所述,为了对所有文件执行此操作,您可以使用find

find /path -type f -exec awk -F. '$1==192 && $2==168 && $3>=1 && $3<=255 && $4>=1 && $4<=255' {} \;

答案 1 :(得分:0)

试试这个:

(192)\.(168)\.(25[0-5]|2[0-4][0-9]|[1]?[0-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|[1]?[0-9]?[0-9])

无论如何,您可以使用http://www.regexper.com来帮助您使用正则表达式:)