轮换
我们将讨论的第一个扩展正则表达式功能称为 交替,这是允许从一组表达式中发生匹配的工具。 正如括号表达式允许从一组指定字符中匹配单个字符一样,交替允许从一组字符串或其他正则表达式中进行匹配。
为了演示,我们将使用 grep的 和这个结合 回音. 首先,让我们尝试一个普通的旧字符串匹配:
[我@linuxbox ~]$ 回声“AAA”| AAA
AAA
[我@linuxbox ~]$ 回声“BBB” | AAA
[我@linuxbox ~]$
[我@linuxbox ~]$ 回声“AAA”| AAA
AAA
[我@linuxbox ~]$ 回声“BBB” | AAA
[我@linuxbox ~]$
一个非常简单的例子,我们将输出 回音 成 grep的 并查看结果。 当匹配发生时,我们看到它被打印出来; 当没有匹配发生时,我们看不到结果。
现在我们将添加交替,由竖线元字符表示:
[我@linuxbox ~]$ 回声“AAA”| grep -E 'AAA|BBB'
AAA
[我@linuxbox ~]$ 回声“BBB” | grep -E 'AAA|BBB'
BBB
[我@linuxbox ~]$ 回声“CCC” | grep -E 'AAA|BBB'
[我@linuxbox ~]$
[我@linuxbox ~]$ 回声“AAA”| grep -E 'AAA|BBB'
AAA
[我@linuxbox ~]$ 回声“BBB” | grep -E 'AAA|BBB'
BBB
[我@linuxbox ~]$ 回声“CCC” | grep -E 'AAA|BBB'
[我@linuxbox ~]$
这里我们看到正则表达式 'AAA|BBB', 意思是“匹配字符串 AAA 或字符串 BBB。” 请注意,由于这是一个扩展功能,我们添加了 -E 选项 grep的 (虽然我们可以使用 埃格雷普 程序),我们将正则表达式用引号括起来,以防止 shell 将竖线元字符解释为管道运算符。 交替不限于两种选择:
[我@linuxbox ~]$ 回声“AAA”| grep -E 'AAA|BBB|CCC'
AAA
[我@linuxbox ~]$ 回声“AAA”| grep -E 'AAA|BBB|CCC'
AAA
要将交替与其他正则表达式元素结合,我们可以使用 () 来分隔交替:
[我@linuxbox ~]$ grep -Eh '^(bz|gz|zip)' 目录*.txt
[我@linuxbox ~]$ grep -Eh '^(bz|gz|zip)' 目录*.txt
该表达式将匹配我们列表中以“bz”、“gz”或“zip”开头的文件名。 如果我们去掉括号,这个正则表达式的含义是:
[我@linuxbox ~]$ grep -Eh '^bz|gz|zip'目录*.txt
[我@linuxbox ~]$ grep -Eh '^bz|gz|zip'目录*.txt
更改以匹配任何以“bz”开头的文件名 或包含 “广州” 或包含 “压缩”。