在这个 SO question中有一些我无法解释的东西:
grep "\'" input_file
匹配给定文件中的所有行。\'
grep 有什么特殊含义吗 ?
grep regex GNU extension : '\'' 匹配整个输入的结尾
这是一个非常奇怪的行为grep
,我不知道如何解释它,但我必须注意它\'
与任何字符都不匹配。它看起来与以下含义相同$
:
$ echo x | grep "x\'"
x
$ echo xy | grep "x\'"
$ echo x | grep "\'x"
更新 1
正如http://www.gnu.org/software/findutils/manual/html_node/find_html/grep-regular-expression-syntax.html中所述(感谢 Richard Sitze 提供的链接),它的含义与$
. 但与此同时,我注意到\'
和之间的区别$
:
$ echo x | grep 'x$'
x
$ echo x | grep 'x$$'
$ echo x | grep "x\'"
x
$ echo x | grep "x\'\'"
x
$ echo x | grep "x\'\'\'"
x
您可以根据需要指定任意\'
多次,但对于$
. 必须只有一个$
。
另一个重要的评论。手册说:
‘\'’ matches the end of the whole input
但严格来说这不是事实,因为\'
不仅匹配整个输入的结尾,还匹配每一行的结尾:
$ (echo x; echo y) | grep "\'"
x
y
具体怎么$
做。
\ 是一个转义字符。这意味着 ' 应该被视为要搜索的文本,而不是控制字符。