Reputation: 778
I am a newbie to parsing.
switch-630624 [standalone: master] (config) # show interface ib status
Interface Description Speed Current line rate Logical port state Physical port state
--------- ----------- --------- ----------------- ------------------ -------------------
Ib 1/1 14.0 Gbps rate 56.0 Gbps Initialize LinkUp
Ib 1/2 14.0 Gbps rate 56.0 Gbps Initialize LinkUp
Ib 1/3 2.5 Gbps rate only 10.0 Gbps Down Polling
Assume I have an engine which injects the command on the switch, and put the above output as 1 huge string in a variable named "output".
I would like to return a dictionary which includes only the ports number as follows:
{'Ib1/11': '1/11', 'Ib1/10': '1/10', ... , }
I guess I should use the Python`s Subprocess module and regular expressions.
Number of ports can vary (can be 3, 10, 20, 30, 60...).
I will appreciate any kind of direction.
Thanks,
Qwerty
Upvotes: 3
Views: 4311
Reputation: 5236
# Did this in Python 2.7
import re
# Assume your input is in this file
INPUT_FILE = 'text.txt'
# Regex to only pay attention to lines starting with Ib
# and capture the port info
regex = re.compile(r'^(Ib\s*\S+)')
result = [] # Store results in a list
with open(INPUT_FILE, 'r') as theFile:
for line in theFile:
match = regex.search(line)
if not match: continue
result.append(match.group())
print result
Upvotes: 1