考虑:
$ echo 'a [b][c]' | awk -F '[\\]\\[]' '{print $2}'
b
作为[
或]
的有效正则表达式,对我来说很有意义。
但是这也可行:
$ echo 'a [b][c]' | awk -F '[][]' '{print $2}'
b
同样在grep中:
$ echo 'a [b][c]' | grep '[][]'
a [b][c]
但是我不知道如何。 [][]
似乎连续两次“不匹配字符”(即[]
)。发生什么事了?
答案 0 :(得分:4)
请参阅POSIX正则表达式规范(http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_03_05)中“ RE方括号表达式”中的列表项目1
:
The <right-square-bracket> ( ']' ) shall lose its special meaning and represent itself in a bracket expression if it occurs first in the list
鉴于,[][]
表示一个括号表达式[...]
,其中包含两个字符列表,]
和[
。
使用反斜杠在括号表达式中转义]
是非POSIX,但是某些工具的某些版本可以接受-YMMV。