传统字符范围
如果我们想构建一个正则表达式来查找列表中的每个文件,以大写字母开头,我们可以这样做:
[我@linuxbox ~]$ grep -h '^[ABCDEFGHIJKLMNOPQRSTUVWXZY]' dirlist*.txt
[我@linuxbox ~]$ grep -h '^[ABCDEFGHIJKLMNOPQRSTUVWXZY]' dirlist*.txt
这只是将所有 26 个大写字母放在括号表达式中的问题。 但是所有打字的想法都令人深感不安,所以还有另一种方式:
[我@linuxbox ~]$ grep -h '^[AZ]' 目录列表*.txt
制造商
控制面板获取
头柱 X X11
Xorg 软盘
网络管理器网络管理器调度器
[我@linuxbox ~]$ grep -h '^[AZ]' 目录列表*.txt
制造商
控制面板获取
头柱 X X11
Xorg 软盘
网络管理器网络管理器调度器
通过使用三个字符范围,我们可以缩写 26 个字母。 任何范围的特性 -
可以通过这种方式表示包含多个范围,例如匹配所有以字母和数字开头的文件名的表达式:
[我@linuxbox ~]$ grep -h '^[A-Za-z0-9]' 目录列表*.txt
[我@linuxbox ~]$ grep -h '^[A-Za-z0-9]' 目录列表*.txt
在字符范围中,我们看到破折号被特殊对待,那么我们实际上如何在括号表达式中包含破折号呢? 通过使其成为表达式中的第一个字符。 考虑这两个例子:
[我@linuxbox ~]$ grep -h '[AZ]' 目录列表*.txt
[我@linuxbox ~]$ grep -h '[AZ]' 目录列表*.txt
这将匹配每个包含大写字母的文件名。 尽管:
[我@linuxbox ~]$ grep -h '[-AZ]' 目录列表*.txt
[我@linuxbox ~]$ grep -h '[-AZ]' 目录列表*.txt
将匹配包含破折号、大写“A”或大写“Z”的每个文件名。