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

Bash 在grep中,为什么它需要逃逸[而不是为了],bash,shell,command-line,grep,Bash,Shell,Command Line,Grep,文件数据中有一行,如下所示 [总体] 当使用grep获取此行时,我发现只有 grep“\[总体]”数据 出于好奇,为什么它需要逃避[,而不是] 编辑:这是在Ubuntu12.04上测试的,我猜没有开头[指定字符类,结尾]就没有意义了。因此,一旦转义了开始括号,结束括号就不需要转义了。我猜没有开始[指定字符类,结束]就没有意义了。因此,一旦您转义了开始括号,结束括号就不需要转义了。因为]只有在前面有一个未转义的[时才具有特殊意义 你可以通过以下方式获得乐趣(如果你有正确的、有点扭曲的心态): 这将

文件
数据
中有一行,如下所示

[总体]

当使用
grep
获取此行时,我发现只有

grep“\[总体]”数据

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


编辑:这是在Ubuntu12.04上测试的,我猜没有开头[指定字符类,结尾]就没有意义了。因此,一旦转义了开始括号,结束括号就不需要转义了。

我猜没有开始[指定字符类,结束]就没有意义了。因此,一旦您转义了开始括号,结束括号就不需要转义了。

因为
]
只有在前面有一个未转义的
[
时才具有特殊意义

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

这将搜索
]
[
-
。您必须小心放置
]
;它必须在character类的开头。您必须小心放置
-
;它必须在课程开始或结束时发出。而否定类的插入符号必须放在第一位

grep '[^][-]' ...

因为
]
只有在前面有一个未转义的
[
时才具有特殊意义

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

这将搜索
]
[
-
。您必须小心放置
]
;它必须在character类的开头。您必须小心放置
-
;它必须在课程开始或结束时发出。而否定类的插入符号必须放在第一位

grep '[^][-]' ...

我赞同德里克和乔纳森的回答。这一年来,我发现自己使用的
fgrep
grep
更多
fgrep
grep-F
grep--fixed strings
相同,其中搜索项只是一个字符串,而不是正则表达式。例如,如果我想搜索
[总体]

fgrep "[overall]" file

我赞同德里克和乔纳森的回答。这一年来,我发现自己使用的
fgrep
grep
更多
fgrep
grep-F
grep--fixed strings
相同,其中搜索项只是一个字符串,而不是正则表达式。例如,如果我想搜索
[总体]

fgrep "[overall]" file

+1.对于极客娱乐活动的免费建议-P+1表示对极客娱乐活动的免费建议-P