我需要处理涉及 IP 地址或包含 IP 主机信息的文件夹的信息。
我需要一个可以识别(匹配)IP 地址的模式,无论是实际的 url、文件夹名称还是数据文件。例如
127.0.0.10
127-0-0-10
127_0_0_10
应该全部匹配。多于。是否有任何 tokenizer 正则表达式可以在 bash 中执行此操作?
答案1
以下正则表达式似乎可以满足您的需要:
\b(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])[-._](25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])[\-._](25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])[\-._](25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\b
$ cat test.txt
127.0.0.10
127-0-0-10
127_0_0_10
256_5_10_1
10-10-100-1
192.168.100.1
$ grep -E '\b(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])[-._](25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])[-._](25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])[-._](25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\b' test.txt
127.0.0.10
127-0-0-10
127_0_0_10
10-10-100-1
192.168.100.1
看https://www.regular-expressions.info/ip.html正则表达式的解释。我只是简单地修改了\.
s ,[-._]
使其匹配-
, .
, 或_
。