在grep中,为什么它需要逃避[而不是为]

时间:2012-07-20 15:02:55

标签: bash shell command-line grep

文件data中有一行,为

  

[整体],....

使用grep获取此行时,我发现只能通过

完成此操作
  

grep“\ [整体]”数据

出于好奇,为什么它不需要[而不是]

编辑:这是在ubuntu 12.04上测试的

3 个答案:

答案 0 :(得分:4)

因为][之前已经没有转义,所以grep '[][-]' ... 只有任何特殊含义。

你可以通过以下方式获得乐趣(如果你有正确的,有些扭曲的心态):

]

这会搜索[-]。您必须小心-的位置;它必须在角色类的开头。您必须小心grep '[^][-]' ... 的位置;它必须在课程的开始或结束时进行。否定班级的插入符必须先行。

{{1}}

答案 1 :(得分:3)

我猜测没有开头[指定一个字符类,结束]没有意义。因此,一旦您逃离了开始支架,关闭的支架就不需要转义。

答案 2 :(得分:1)

我是Derek和Jonathan的第二个回答。在过去的一年中,我发现自己使用的fgrep超过grepfgrepgrep -Fgrep --fixed-strings相同,其中搜索字词只是一个字符串,而不是正则表达式。例如,如果我想搜索[overall]

fgrep "[overall]" file