如何在grep中转义括号内的方括号

时间:2014-02-07 18:27:37

标签: regex grep escaping regex-negation

我想在正则表达式中匹配除方括号之外的其他字符。

确切地说,我想匹配一些特殊字符而其他一些不匹配,因此我想指定它们

# grep $'[^a-zA-Z0-9#\\/:!<>{},=?. ()["_+;*\'&|$-]' file

缺少],我尝试使用\]\\]进行转义,依此类推,我读过那些在[^]外面做的人,但我需要它里面!

1 个答案:

答案 0 :(得分:8)

]放在^之后。

这是一个例子。输入文件“foo”包含:

foo
[
bar
]
baz
quux

我们执行命令:

grep '[^][]' foo

输出结果为:

foo
bar
baz
quux

来自bracket expressions in POSIX regular expressions的文档:

  

右括号(']')将失去其特殊含义,如果它首先出现在列表中(在最初的抑扬符号('^'之后),如果有的话),则表示自己在括号表达式中。

还有:

  

特殊字符'。','*','['和'\'(句点,星号,左括号和反斜杠)将在括号表达式中失去特殊含义。