在sed中扩展regex的范围

在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: 扩

我有一个带有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:

扩展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