添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

使用正则表达式过滤命令行显示信息

正则表达式

使用display命令查看设备的配置信息和运行状态信息时,可以通过正则表达式过滤不需要的信息。正则表达式(regular-expression)是一种模式匹配工具,用户根据一定的规则构建匹配模式,然后将匹配模式与目标对象进行匹配。正则表达式格式上是由1~256个普通字符和特殊字符组成的字符串。

普通字符匹配的对象是普通字符本身。包括所有的大写和小写字母、数字、下划线、标点符号以及一些特殊符号。例如:a匹配abc中的a,20匹配20.1.1.1中的20,@匹配[email protected]中的@。

为帮助用户灵活地构建匹配模式,正则表达式提供了一些具有特殊含义的专用字符,也称为“元字符”(metacharacter)。这些特殊字符用来规定其它字符在目标对象中的出现模式。 表1-4 是对特殊字符及其语法意义的使用描述。

表1-4 特殊字符及其语法意义描述

特殊字符

转义字符。将下一个字符(特殊字符或者普通字符)标记为普通字符。

\*匹配*

匹配行首的位置。

^10匹配10.10.10.1,不匹配20.10.10.1

匹配行尾的位置。

1$匹配10.10.10.1,不匹配10.10.10.2

匹配前面的子正则表达式零次或多次。

10*可以匹配1、10、100、1000、……

(10)*可以匹配空、10、1010、101010、……

匹配前面的子正则表达式一次或多次。

10+可以匹配10、100、1000、……

(10)+可以匹配10、1010、101010、……

匹配前面的子正则表达式零次或一次。

说明:

当前,在华为公司数据通信设备上运用正则表达式输入?时,系统显示为命令行帮助功能。华为公司数据通信设备不支持正则表达式输入?特殊字符。

10?可以匹配1或者10

(10)?可以匹配空或者10

匹配任意单个字符。

0.0可以匹配0x0、020、……

.oo.可以匹配book、look、tool、……

一对圆括号内的正则表达式作为一个子正则表达式,匹配子表达式并获取这一匹配。圆括号内也可以为空。

100(200)+可以匹配100200、100200200、……

匹配x或y。

100|200匹配100或者200

1(2|3)4匹配124或者134,而不匹配1234、14、1224、1334

[xyz]

匹配正则表达式中包含的任意一个字符。

[123]匹配255中的2

[^xyz]

匹配正则表达式中未包含的字符。

[^123]匹配除123之外的任何字符

[a-z]

匹配正则表达式指定范围内的任意字符。

[0-9]匹配0到9之间的所有数字

[^a-z]

匹配正则表达式指定范围外的任意字符。

[^0-9]匹配所有非数字字符

最简单的正则表达式不包含任何特殊字符,例如,可以定义一个正则表达式“hello”,它只匹配字符串“hello”。实际应用中,往往是由多个普通字符和特殊字符组合使用,匹配某些特征的字符串。

  • 特殊字符的退化

    某些特殊字符如果处在如下的正则表达式的特殊位置时,会引起退化,成为普通字符。

    • 特殊字符处在转义符号‘\’之后,则发生转义,变为匹配该字符本身。

    • 特殊字符“*”、“+”、“?”,处于正则表达式的第一个字符位置。例如:+45匹配+45,abc(*def)匹配abc*def。

    • 特殊字符“^”,不在正则表达式的第一个字符位置。例如:abc^匹配abc^。

    • 特殊字符“$”,不在正则表达式的最后一个字符位置。例如:12$2匹配12$2。

    • 右括号“)”或者“]”没有对应的左括号“(”或“[”。例:abc)匹配abc),0-9]匹配0-9]。

      除非特别说明,特殊字符的退化也适用于括号“()”内包含的子正则表达式。

      正则表达式的使用方法

      交换机采用正则表达式实现管道符的过滤功能。并非所有display命令均支持指定过滤方式,一般只有显示信息较多的命令才支持。

      如果显示信息较多,查看过滤后的配置信息时系统需要较长的时间才能获取正确的信息,因此需要用户等待一段时间。

      使用正则表达式过滤命令行显示信息的方法有两种:
      • 在命令中指定过滤方式:在命令行中通过输入 begin exclude include 关键字加正则表达式的方式来过滤显示。
      • 在分屏显示时指定过滤方式:在分屏显示时,使用“/”、“-”或“+”符号加正则表达式的方式,可以对还未显示的信息进行过滤显示。其中,“/”等同关键字 begin ;“-”等同关键字 exclude ;“+”等同关键字 include

      在命令中指定过滤方式

      系统支持使用 | count ,显示使用过滤条件后输出的结果的行数。可以与过滤方式配合使用。

      在支持正则表达式的命令中,有三种过滤方式可供选择:

      • | begin regular-expression :输出以匹配指定正则表达式的行开始的所有行。

        即过滤掉所有待输出字符串,直到出现指定的字符串(此字符串区分大小写)为止,其后的所有字符串都会显示到界面上。

      • | exclude regular-expression :输出不匹配指定正则表达式的所有行。

        即待输出的字符串中没有包含指定的字符串(此字符串区分大小写),则会显示到界面上;否则过滤不显示。

      • | include regular-expression :只输出匹配指定正则表达式的所有行。

        即待输出的字符串中如果包含指定的字符串(此字符串区分大小写),则会显示到界面上;否则过滤不显示。

        regular-expression 为字符串形式(不包括中文),长度范围是1~255。

        对于某些输出信息较多的display命令,可以指定输出信息的过滤方式。

        系统对命令的显示信息进行过滤后,还支持上下文显示规则。上下文显示规则有如下几种:
        • before before-line-number :输出符合过滤规则的行和其前面 before-line-number 行的数据信息。

        • after after-line-number :输出符合过滤规则的行和其后面 after-line-number 行的数据信息。

        • before before-line-number + after after-line-number 或者 after after-line-number + before before-line-number :输出符合过滤规则的行和其前面 before-line-number 行、后面 after-line-number 行的数据信息。

          before-line-number after-line-number 参数均为整数形式,取值范围是1~999。

          下面举例来说明在命令中指定过滤方式的用法。

          例1:执行命令 display interface brief ,显示不匹配 “Ethernet”、 “NULL” 或“Tunnel” 的所有行。

          <HUAWEI> display interface brief | exclude Ethernet| NULL | Tunnel
          PHY: Physical
          *down: administratively down
          ^down: standby
          (l): loopback
          (s): spoofing
          (b): BFD down
          (e): ETHOAM down
          (dl): DLDP down
          (d): Dampening Suppressed
          InUti/OutUti: input utility/output utility
          Interface                   PHY   Protocol InUti OutUti   inErrors  outErrors
          Eth-Trunk1                  down  down        0%     0%          0          0
          Eth-Trunk17                 down  down        0%     0%          0          0
          LoopBack1                   up    up(s)       0%     0%          0          0
          Vlanif1                     up    down        --     --          0          0
          Vlanif2                     down  down        --     --          0          0
          Vlanif10                    down  down        --     --          0          0
          Vlanif12                    down  down        --     --          0          0
          Vlanif13                    down  down        --     --          0          0
          Vlanif20                    up    up          --     --          0          0
          Vlanif22                    down  down        --     --          0          0
          Vlanif222                   down  down        --     --          0          0
          Vlanif4094                  down  down        --     --          0          0

          例2:执行命令 display current-configuration ,只显示匹配正则表达式“vlan”的所有行。

          <HUAWEI> display current-configuration | include vlan
          vlan batch 2 10 101 to 102 800 1000
          vlan 2
          vlan 10
           port trunk pvid vlan 800
           undo port trunk allow-pass vlan 1
           port trunk allow-pass vlan 10 101 800
           undo port hybrid vlan 1
           undo port hybrid vlan 1
           port hybrid untagged vlan 10
           undo port hybrid vlan 1
           undo port hybrid vlan 1
          

          例3:通过使用after,输出符合过滤规则的行和对应的数据信息(before用法相同)。

          <HUAWEI> display ip routing-table | after 2 include  0.0.0.0                                                                        
          Route Flags: R - relay, D - download to fib                                                                                         
          ------------------------------------------------------------------------------                                                      
          Routing Tables: Public                                                                                                              
                   Destinations : 16       Routes : 16                                                                                        
          Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface                                                          
          ####### The information is filtered #######                                                                                         
                 10.3.0.0/16  Static  60   0           D   0.0.0.0         NULL0                                                              
                 10.8.0.0/16  Static  60   0           D   0.0.0.0         NULL0                                                              
               10.18.20.0/24  Direct  0    0           D   10.18.20.254    Vlanif20                                                           
             10.18.20.254/32  Direct  0    0           D   127.0.0.1       Vlanif20                                                           
          ####### The information is filtered #######                                                                                         
                120.0.0.0/8   Static  60   0          RD   120.51.55.1     MEth0/0/1                                                          
              120.51.55.0/24  Direct  0    0           D   120.51.55.44    MEth0/0/1                                                          
             120.51.55.44/32  Direct  0    0           D   127.0.0.1       MEth0/0/1

          以上举例的显示信息仅为示意,请以设备实际显示为准。

          在分屏显示时指定过滤方式

          支持在分屏显示时指定过滤方式的命令行有:
          • display current-configuration
          • display interface
          • display arp

          采用分屏显示时,可以在分屏提示符“---- More ----”中指定过滤类型:

          • /regular-expression:输出以匹配指定正则表达式的行开始的所有行。

          • -regular-expression:输出不匹配指定正则表达式的所有行。

          • +regular-expression:只输出匹配指定正则表达式的所有行。

            例如:执行命令display current-configuration,当分屏显示时,在余下的回显中仅显示Vlanif相关的信息。
            <HUAWEI> display current-configuration
            !Software Version V200R019C10
            sysname HUAWEI
            vlan batch 10 to 11 100
            hotkey CTRL_G "display tcp status"
            lldp enable
            undo http server enable
            undo http secure-server enable
            dhcp enable
            dhcp snooping enable
            +Vlanif            //输入过滤方式
            Filtering...
            interface Vlanif10
            interface Vlanif100
  •