0

我很困惑什么时候应该使用'\'。

考虑以下示例:

(1)

$ grep -Eh '^(bz|gz|zip)' filenames.txt

它匹配以 bz 、 gz 或 zip 开头的结果。

(2)

$ echo "(555) 123-4567" | grep -E '^\(?[0-9][0-9][0-9]\)? [0-9] [0-9][0-9]$'

输出:(555)123-4567


  1. 以示例 (1) 为例,为什么不需要 '\' 来转义括号 ()
  2. 以示例 (2) 为例,为什么它需要 '\' 来转义 ()?

我正在使用 Ubuntu 发行版。

4

1 回答 1

4

您的每个示例中的括号表示不同的含义。

在第一个示例中,括号是分组的,并且与文件名匹配。因此,您会找到以bz而不是(bz.

在您的第二个示例中,括号是文字,实际上出现在您匹配的电话号码中。

于 2012-05-06T04:30:22.427 回答