我在匹配从思科路由器返回的模式时遇到了困难。这里是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
!
使用正则表达式,我想匹配"prefix-set"到"end-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'"
}
有什么想法可以清理返回的数据吗?
谢谢!!