在sed中扩展regex的范围
我有一个带有IP地址的文件,文件末尾包含正则表达式。 例如:在sed中扩展regex的范围,sed,scripting,Sed,Scripting,我有一个带有IP地址的文件,文件末尾包含正则表达式。 例如: 111.111.11.[2-5] 111.11.11.[2,3,7] 这意味着IP地址可以在111.111.11.2、111.111.11.3等范围内 我需要能够获取该文件并为每个选项扩展这些正则表达式。我的意思是111.111.11.[2-5],我会在上面运行一个脚本,并得到以下结果: 111.111.11.2 111.111.11.3 111.111.11.4 111.111.11.5 在这种情况下,我会选择Python: 扩
111.111.11.[2-5]
111.11.11.[2,3,7]
这意味着IP地址可以在111.111.11.2、111.111.11.3等范围内
我需要能够获取该文件并为每个选项扩展这些正则表达式。我的意思是111.111.11.[2-5],我会在上面运行一个脚本,并得到以下结果:
111.111.11.2
111.111.11.3
111.111.11.4
111.111.11.5
在这种情况下,我会选择Python:
扩展ip范围.py脚本:
import sys
with open(sys.argv[1], 'r') as f:
for l in f.read().splitlines():
# extracting the ending part with a range
parts = l.rsplit('.', 1)
r = parts[1].strip('[]') # getting range relative representation
if '-' in r: # if it's range by hyphen `-`
if r.count('-') > 1:
raise Exception("Invalid range " + r)
else:
bounds = r.split('-') # range boundaries
for i in range(int(bounds[0]), int(bounds[1])+1):
print("%s.%s" % (parts[0], i))
elif ',' in r: # if it's range by comma `,`
items = r.split(',')
for i in items:
print("%s.%s" % (parts[0], i))
用法(在Python 3上测试):
输出:
111.111.11.2
111.111.11.3
111.111.11.4
111.111.11.5
111.11.11.2
111.11.11.3
111.11.11.7
你试过什么?StackOverflow是关于帮助人们修复编程代码的。对教程、研究、工具、建议、库和代码的请求是离题的。在这里发布更多Qs之前,请阅读、、和。祝你好运。我试过sed和awk。我试图获取前3个八位字节并将它们存储在一个变量中,然后获取范围并在for循环中使用它。我遇到的问题是,在一个单独的正则表达式中,这些范围或项目的数量都是可变大小的,所以我不能像这样硬编码,这很有帮助!但我在这里只放了两个正则表达式作为例子。在IP端可能有任意数量的正则表达式,如111.11.111。[2 | 88]。这意味着我可以在所有可能的情况下,在ips的末尾有任何regex的变化
111.111.11.2
111.111.11.3
111.111.11.4
111.111.11.5
111.11.11.2
111.11.11.3
111.11.11.7