在tcl
中,我将此作为: -
set promptInfo [oBOTANDROID2 launchVapiEiCmd getinfo]
并将输出作为" -
VAPIEI Cmd Rcvd: {state inservice} {type dmc} {description {BOTSP2,10.77.41.154,tcp;(dmc)}} {lines 2} {calls 2} {streams 4} {{primary cm} 10.77.41.11} {{backup cm} } {status {}} {id dmc2} {userid } {{last error} {}} {{delay offer} false} {{Voice Mail client status} {inactive}} {{primary cti} {}} {{backup cti} {}} {{current cti} {}} {{preferred mode} {voip}} {{call type} {voip}} {{domain} {}} {{ixenabled} {no}} {{esrstvernego} {null}} {{ipv4address} {10.77.41.154}} {{ipv6address} {}} {{deploymentmodel} {on-premise}} {{login type} {uc-directory}} {centraluds {}} {{sip port} {42708}} {privacy disabled}
在这里,我需要比较两个ip
与BOTSP2
之间的ipv4address
和{{1}}之后的其他{{1}},两者都应该相同。
如何提取两个IP地址?
答案 0 :(得分:1)
您可以使用以下代码:
set a {VAPIEI Cmd Rcvd: {state inservice} {type dmc} {description {BOTSP2,10.77.41.154,tcp;(dmc)}} {lines 2} {calls 2} {streams 4} {{primary cm} 10.77.41.11} {{backup cm} } {status {}} {id dmc2} {userid } {{last error} {}} {{delay offer} false} {{Voice Mail client status} {inactive}} {{primary cti} {}} {{backup cti} {}} {{current cti} {}} {{preferred mode} {voip}} {{call type} {voip}} {{domain} {}} {{ixenabled} {no}} {{esrstvernego} {null}} {{ipv4address} {10.77.41.154}} {{ipv6address} {}} {{deploymentmodel} {on-premise}} {{login type} {uc-directory}} {centraluds {}} {{sip port} {42708}} {privacy disabled}}
regexp {BOTSP2,([\d.]+).*\{ipv4address\}\s*\{([\d.]+)} $a m ip1 ip2
if {$ip1 eq $ip2} {
puts "Equal!"
}
请参阅IDEONE demo
正则表达式BOTSP2,([\d.]+).*\{ipv4address\}\s*\{([\d.]+)
将与BOTSP2,
匹配,然后将一个或多个数字和点(= ip1
)捕获到第1组中,然后它会找到{ipv4address}
+空格+ {
然后将一个或多个数字和点捕获到第2组(ip2
)。
您可以稍后检查字符串是否相等。
答案 1 :(得分:0)
您获得的输出可以很好地解释为Tcl列表,因此您可以使用lsearch
:
% lsearch -regexp -inline $promptInfo "BOTSP2"
description {BOTSP2,10.77.41.154,tcp;(dmc)}
% lsearch -regexp -inline $promptInfo "ipv4address"
{ipv4address} {10.77.41.154}
可以使用lindex
清除第一个结果并进行拆分,而使用单个lindex
清除第二个结果。如果你想把IP放在一行:
% lindex [split [lindex [lsearch -regexp -inline $promptInfo "BOTSP2"] 1] ,] 1
10.77.41.154
% lindex [lsearch -regexp -inline $promptInfo "ipv4address"] 1
10.77.41.154
之后你可以比较它们。