过滤命令行显示信息
过滤命令行显示信息可以帮助用户迅速查找到所需要的信息,例如在执行display命令查看显示信息时,可以使用正则表达式(即指定显示规则)来过滤显示信息。
显示特性
在一次显示信息超过一屏时,提供暂停功能,在暂停显示时用户可以有三种选择,如表1-8所示。
正则表达式
正则表达式描述了一种字符串匹配的模式,由普通字符(例如字符a到z)和特殊字符(或称“元字符”)组成。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
检查字符串中符合某个规则的子字符串,并可以获取该子字符串。
根据匹配规则对字符串进行替换操作。
正则表达式由普通字符和特殊字符组成。
普通字符
普通字符匹配的对象是普通字符本身。包括所有的大写和小写字母、数字、标点符号以及一些特殊符号。例如:a匹配abc中的a,10匹配10.113.25.155中的10,@匹配xxx@xxx.com中的@。
特殊字符
特殊字符配合普通字符匹配复杂或特殊的字符串组合。表1-9是对特殊字符及其语法意义的使用描述。
表1-9 特殊字符及其语法意义描述特殊字符
功能
举例
\
转义字符。将下一个字符(特殊字符或者普通字符)标记为普通字符。
\*匹配*
^
匹配行首的位置。
^10匹配10.10.10.1,不匹配2.2.2.2
$
匹配行尾的位置。
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
.
匹配任意单个字符。
a.b匹配任何一个以a开头,以b结尾含有三个字符的字符串
0.0可以匹配0x0、020、……
.oo.可以匹配book、look、tool、……
()
一对圆括号内的正则表达式作为一个子正则表达式,匹配子表达式并获取这一匹配。
如果圆括号中内容为空,则等价于空串。
如果模式串只有(),则可匹配任意字符串。
如果模式串中的右括号没有匹配的左括号,则右括号就作为普通字符。
如果模式串中的左括号没有匹配的右括号,则为非法模式串。
100(200)+可以匹配100200、100200200、……
(ab)匹配abcab
()匹配任意字符串
a()b匹配12ab12
a)b匹配za)bc
a(b为非法模式串
_
匹配一个符号,包括逗号、左大括号、右大括号、左括号、右括号和空格,在表达式的开头或结尾时还可作起始符、结束符(同^ ,$)。
_65001_可以匹配20 65001 30、20 65001、65001 30、65001、……
x|y
匹配x或y。
100|200匹配100或者200
1(2|3)4匹配124或者134,而不匹配1234、14、1224、1334
[xyz]
匹配正则表达式中的任意一个字符。不可同时匹配多个字符,也不可匹配同一个字符多次。
[123]匹配255中的2
[abc]匹配字符“a”、“b”、“c”
[^xyz]
匹配字符串中非“x”、“y”、“z”的字符。只要字符串中有非“x”、“y”、“z”的字符,就能匹配到。
[^123]匹配除123之外的任何字符
[^abc]匹配除“a”、“b”、“c”之外的任何字符
[a-z]
匹配正则表达式指定范围内的任意一个字符。不可同时匹配多个字符,也不可匹配同一个字符多次。
[0-9]匹配指定范围内的任意数字
[a-z]匹配指定范围内的任意字母
[z-a]为非法模式串
[^a-d]
匹配字符串中除“a”、“b”、“c”、“d”以外的其他字符。只要字符串中有a~d范围外的字符,就能匹配到。
[^0-9]匹配所有非数字字符
[^a-z]匹配除字母以外的其他任意字符
[^z-a]为非法模式串
除非特别说明,上表中涉及到的字符指的是可以打印的字符,包括字母、数字、空格及特殊符号等。
特殊字符的退化
某些特殊字符如果处在如下的正则表达式的特殊位置时,会引起退化,成为普通字符。
特殊字符处在转义符号‘\’之后,则发生转义,变为匹配该字符本身。
特殊字符“*”、“+”,处于正则表达式的第一个字符位置。例如:+45匹配+45,abc(*def)匹配abc*def。
特殊字符“^”,不在正则表达式的第一个字符位置。例如:abc^匹配abc^。
特殊字符“$”,不在正则表达式的最后一个字符位置。例如:12$2匹配12$2。
右括号“)”或者“]”没有对应的左括号“(”或“[”。例:abc)匹配abc),0-9]匹配0-9]。
除非特别说明,以上正则表达式包括括号“()”内包含的子正则表达式。
普通字符与特殊字符的组合使用
实际应用中,往往不是一个普通字符加上一个特殊字符配合使用,而是由多个普通字符和特殊字符组合,匹配某些特征的字符串。
在命令中指定过滤方式
按过滤条件进行查询时,显示内容的第一行信息中,以包含该字符串的整条信息作为起始,而非以过滤字符串作为起始。
系统支持使用| count显示使用过滤条件后输出的结果的行数,支持使用| section显示使用过滤条件后输出的结果段信息,支持使用| ignore-case表示匹配字符串时不区分大小写,还支持使用| no-more表示过滤条件后输出的结果不分屏。四种均可以与过滤方式配合使用。
在支持正则表达式的命令中,有三种过滤方式可供选择:
| begin regular-expression:输出以匹配指定正则表达式的行开始的所有行。
即过滤掉所有待输出字符串,直到出现指定的字符串(此字符串区分大小写)为止,其后的所有字符串都会显示到界面上。
| exclude regular-expression:输出不匹配指定正则表达式的所有行。
即待输出的字符串中没有包含指定的字符串(此字符串区分大小写),则会显示到界面上;否则过滤不显示。
| include regular-expression:只输出匹配指定正则表达式的所有行。
即待输出的字符串中如果包含指定的字符串(此字符串区分大小写),则会显示到界面上;否则过滤不显示。
regular-expression为字符串形式,长度范围是1~255。
支持多级管道符对命令行进行筛选过滤。按照用户输入的先后顺序,上一级管道处理的输出作为下一级管道处理的输入,最多支持32级过滤。
| section仅用于显示结果中具有段信息的命令。如display current-configuration、display this等命令。
下面举例来说明在命令中指定过滤方式的用法。
例1:执行命令display interface brief,显示不匹配正则表达式“10GE|40GE”的所有行,“10GE|40GE”表示匹配“10GE”或“40GE”。
<HUAWEI> display interface brief | exclude 10GE|40GE
PHY: Physical *down: administratively down ^down: standby (l): loopback (s): spoofing (b): BFD down (e): ETHOAM down (d): Dampening Suppressed (p): port alarm down (dl): DLDP down (c): CFM down (sd): STP instance discarding InUti/OutUti: input utility rate/output utility rate Interface PHY Protocol InUti OutUti inErrors outErrors Eth-Trunk2 down down 0% 0% 0 0 Eth-Trunk27 up up 0.01% 0.01% 0 0 MEth0/0/0 up up 0.01% 0.01% 0 0 NULL0 up up(s) 0% 0% 0 0 Vlanif2 down down -- -- 0 0 Vlanif10 down down -- -- 0 0 Vlanif20 down down -- -- 0 0 Vlanif200 up up -- -- 0 0
例2:执行命令display current-configuration,只显示匹配正则表达式“vlan”的所有行。
<HUAWEI> display current-configuration | include vlan
vlan batch 2 9 to 20 77 99 200 222 4091 vlan 19 mux-vlan vlan 222 aggregate-vlan access-vlan 1 instance 2 vlan 2 ce-vlan 10 port trunk allow-pass vlan 99 200 igmp-snooping static-router-port vlan 99 port trunk allow-pass vlan 20 port default vlan 77 port trunk allow-pass vlan 20
例3:执行命令display current-configuration,显示所有匹配正则表达式“vlan”的个数。
<HUAWEI> display current-configuration | include vlan | count
Total lines: 14.
以上举例中的显示信息仅为示意。
> filename
将display命令显示的结果输出到指定的文件。如果目标文件已经存在,则覆盖该文件的原有内容。
>> filename
将display命令显示的结果追加到指定文件的末尾,原文件的内容仍保留。