sed 和 grep 中的 c1-c2 正则表达式

MP *_*ons 3 grep sed regular-expression command

我试图了解该表达式[c1-c2]sedor 一起使用时的作用grep

grep -E "[c1-c2]"
Run Code Online (Sandbox Code Playgroud)

这匹配 1-9 和 a、b、c。据我了解,它应该匹配 ASCII 表中 1 和 c 之间的字符。

Ste*_*itt 7

[c1-c2]是一个括号表达式。在给定的形式中,它匹配字符“c”、“1”和“c”之间的字符范围以及字符“2”。字符的范围取决于语言环境;在 POSIX 语言环境中,它是 ASCII 代码介于 49(“1”的代码)和 99(“c”的代码)之间的字符集。因此:

$ echo : | LANG=C grep -E '[c1-c2]'
:
$ echo 0 | LANG=C grep -E '[c1-c2]'
$ echo A | LANG=C grep -E '[c1-c2]'
A
Run Code Online (Sandbox Code Playgroud)

我怀疑其意图是,c1c2代表限制您感兴趣的范围的单个字符,因此您会写[a-m]或类似的东西,而不是[c1-c2].