【发布时间】:2013-12-06 21:24:10
【问题描述】:
我很难匹配从 cisco 路由器返回的模式。这是 sh run prefix-set xxx 命令的 $expect_out(buffer) 输出:
sh run prefix-set abc_123
RP/0/RSP0/CPU0:a1.rtr2#sh run prefix-set abc_123
RP/0/RSP0/CPU0:a1.rtr2#sh run prefix-set abc_123-99999-in
Fri Dec 6 21:12:16.863 GMT
prefix-set abc_123-99999-in
2.245.109.0/24 le 32,
2.245.196.0/22 le 32,
2.245.246.0/23 le 32,
2.245.248.0/23 le 32
end-set
!
使用正则表达式,我想通过“end-set”匹配“prefix-set”,消除之前和之后的所有内容。
我正在寻找最终看起来像这样的数据:
prefix-set abc_123-99999-in
2.245.109.0/24 le 32,
2.245.196.0/22 le 32,
2.245.246.0/23 le 32,
2.245.248.0/23 le 32
end-set
“abc_123-99999-in”和返回的前缀总是不同的。
我目前使用的代码:
expect "\r"
send_user ">>>>> Executing: sh run prefix-set $ccname <<<<\n"
#show prefix-set. \t tabs out the name for completion
send "sh run prefix-set $ccname\t\r"
expect "!\r"
if {[regexp {^.*Kprefix\-set.*$} $expect_out(buffer) pfx]} {
set pfx [string trimright $pfx]
puts $output "URL is: '$pfx'"
}
关于如何清理返回的数据有什么想法吗?
谢谢!!
【问题讨论】: