当我在 BSD grep 的正则表达式字符范围中包含 NULL 字符 (\x00) 时,结果出乎意料:没有字符匹配。为什么会这样?
这是一个例子:
$ echo 'ABCabc<>/ă' | grep -o [$'\x00'-$'\x7f']
在这里,我希望所有字符直到最后一个匹配,但是结果是没有输出(没有匹配)。
或者,当我从 \x01 开始字符范围时,它按预期工作:
$ echo 'ABCabc<>/ă' | grep -o [$'\x01'-$'\x7f']
A
B
C
a
b
c
<
>
/
另外,这是我的 grep 和 BASH 版本:
$ grep --version
grep (BSD grep) 2.5.1-FreeBSD
$ echo $BASH_VERSION
3.2.57(1)-release