用处:正则表达式用来获取回显中想要的字段或某些字段的个数
回显实例

optionalSwitches
一:获取回显中匹配项字段
正则表达式语法
regexp ?optionalSwitches ? patterns ?searchString ?fullMatch subMatch1 ... subMatchn
“-line” :开启行敏感
set buf ["show board-info" -r]
### 正则匹配主框 即 MPU(M)所在机框,并输出主框号:0或1 实例回显中则为0
regexp -line {MPU\(M\)\s+\S+\s+(\d)} $buf master_mpu_shelf master_shelf
puts master_mpu_shelf:$master_mpu_shelf
puts master_shelf:$master_shelf
输出结果:
master_mpu_shelf:MPU(M) 9900MPUCII 0
master_shelf:0
### 正则匹配备框主主控 即 MPU(M),并输出主主控:T1或T2 实例回显中则为T1
regexp -line {MPU\(M\)\s+\S+\s+\S\s+(\S\d)} $buf master_mpu_Tn master_panel
puts master_mpu_Tn:$master_mpu_Tn
puts master_panel:$master_panel
输出结果:
master_mpu_Tn:MPU(M) 9900MPUCII 0 T1
master_panel:T1
回显
### 正则匹配备框即 MPU(S)所在机框,并输出主框号:0或1 实例回显中则为1
regexp -line {MPU\(S\)\s+\S+\s+(\d)} $buf slave_mpu_shelf slave_shelf
puts slave_mpu_shelf:$slave_mpu_shelf
puts slave_shelf:$slave_shelf
输出结果:
slave_mpu_shelf:MPU(S) 9900MPUCII 1
slave_shelf:1
### 正则匹配备框备主控即 MPU(S),并输出主主控:T1或T2 实例回显中则为T2
regexp -line {MPU\(S\)\s+\S+\s+\S\s+(\S\d)} $buf slave_mpu_Tn slave_panel
puts slave_mpu_Tn:$slave_mpu_Tn
puts slave_panel:$slave_panel
输出结果:
slave_mpu_Tn:MPU(S) 9900MPUCII 1 T1
slave_panel:T1
二:获取回显中匹配项字段的个数
“-all” :使正则表达式在回显字符串中尽可能多的匹配,返回找到匹配项的总数
set buf ["show board-info" -r]
set show_board_on_num [regexp -all { on } $buffer] ;#返回on的总个数,{ on } on的两边一定要带空格,否则会匹配到Online/Onshelf等中的on
puts show_board_on_num:$show_board_on_num
show_board_on_num:48
三:获取回显中匹配项字段列表
“ -all -inline” 共用,将每次匹配字段追加到列表中,输出结果是列表
set buf [ "show board-info" -t 1000 -r]
set MPU [regexp -all -inline {8800MPU+\S+} $buf]
set SFU [regexp -all -inline {88+\w+SFU+\S+} $buf]
set PFU [regexp -all -inline {8800+\w?\w?IPM+\w+} $buf]
set IPM [regexp -all -inline {8800(?!MPU.)(?!IPM.)\w+} $buf]
puts MPU:$MPU
puts SFU:$SFU
puts PFU:$PFU
puts IPM:$IPM
输出结果
MPU:8800MPUCII 8800MPUCII 8800MPUCII 8800MPUCII
SFU:8808SFUC(V1.1) 8808SFUC(V1.1) 8808SFUC(V1.1) 8808SFUC(V1.1) 8808SFUC(V1.1) 8808SFUC(V1.1) 8808SFUC(V1.1) 8808SFUC(V1.1)
PFU:8800LQ36E2A 8800LQ36E2A 8800LQ36E2A 8800XF48E2A 8800XF48E2A 8800UQ36E2A 8800UQ36E2A 8800LQ36E2AU18 8800LQ36E2AU18
IPM:8800IPMC 8800IPMC
版权声明:本文为weixin_44081384原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。