以下是我的尝试,但它没有做到正确。我的“文本”文件中有很多内容,但我想获取vlan和ports: 尝试使用Python:
([\d])+\W+[a-zA-Z]+\W+[A-Za-z]+\W+|[\w+]+([\d])/([\d])
输出:
Vlan 1 Et0 / 1
Vlan 1 Et0 / 3
Vlan 1 Et0 / 4
Vlan 1 Et0 / 5
Vlan 1 Et0 / 6
Vlan 1 Et0 / 7
Vlan 2 Et0 / 0
Vlan 3 Et0 / 2
从此......
asa# Show switch vlan VLAN Name Status Ports ---- -------------------------------- --------- ----------------------------- 1 inside up Et0/1, Et0/3, Et0/4, Et0/5 Et0/6, Et0/7 2 outside up Et0/0 3 dmz up Et0/2
答案 0 :(得分:2)
您可以尝试使用此正则表达式捕获ports
和(?m)^(\d+)|(Et\d+\/\d+)
,
ss="""1 inside up Et0/1, Et0/3, Et0/4, Et0/5
Et0/6, Et0/7
2 outside up Et0/0
3 dmz up Et0/2"""
regx= re.compile(r'(?m)^(\d+)|(Et\d+\/\d+)')
vlan=""
for m in regx.finditer(ss):
if m.group(1): vlan=m.group(1)
if m.group(2):
print("VLAN {} {}".format(vlan, m.group(2)))
在python中,
VLAN 1 Et0/1
VLAN 1 Et0/3
VLAN 1 Et0/4
VLAN 1 Et0/5
VLAN 1 Et0/6
VLAN 1 Et0/7
VLAN 2 Et0/0
VLAN 3 Et0/2
输出,
"ss" value
已修改,用于查看我之前对readability
的回答中排除的输入文本变量{{1}}。
答案 1 :(得分:0)
这里的挑战是每个VLAN之间没有明确的分隔符。但是,如果我们假设VLAN的状态始终为up
,那么输出可以通过编程方式一起被黑客攻击,如下所示:
vlan_id = 0
for vlan in txt.split('up'):
for port in re.findall(r'(Et\d/\d)', vlan):
print('Vlan {} {}'.format(vlan_id, port))
vlan_id += 1