在 grep 命令中,我可以将 [:digit:] 更改为 [0-9] 吗?

D.M*_*Mar 8 grep

grep [0-9]以相同的方式工作grep [:digit:]吗?

Gui*_*ido 16

不,[0-9]一样的[:digit:]

[0-9] 匹配数字 0 到 9。

[:digit:] 匹配 0 到 9,以及非西方语言中的数字(例如东阿拉伯语)。

  • `[charX-charY]` 意味着在当前字符集中查找 *charX* 的字符代码的低级库代码,并从那里开始计数到 ​​charY* 的代码。`[AZ]` 在 ASCII 系统上匹配 26 个代码:{65,...90}。EBCDIC 匹配 41 个代码:{193,...233}。`[:upper:]` 总是只匹配 ASCII、EBCDIC 等的 26 个代码。幸运的是,`[0-9]` 匹配 10 个带有 ASCII 或 EBCDIC 代码的代码——不确定是否存在任何字符集(或应该存在),其中 `[0-9]` 匹配多于或少于 10 个代码。如果存在这样的集合,`[:digit:]` 很有用。 (4认同)
  • @Guido 实际上`[AZ]` 有时匹配的不仅仅是 ASCII 字母:http://unix.stackexchange.com/questions/15980/does-should-lc-collat​​e-affect-character-ranges 另一方面,我认为所有现存的语言环境有 `[0-9]` 只匹配 ASCII 数字。 (4认同)
  • @agc `[0-9]` 匹配 **literal** ASCII 字符“0”、“1”、...、“9”,与 `[AZ]` 匹配 ASCII 字符“A”到“Z”的方式相同”。根据定义,这些模式仅限于 ASCII 字符集。另一方面,`[:digit:]` 表示更广泛的**字符类**,其中还包括其他语言中数字的 Unicode 字符。 (3认同)