现在我想查找是否有包含 '\' 字符的行。我试过grep "\\" XXFile
但它暗示“尾随反斜杠”。但当我尝试时grep '\\' XXFile
没关系。谁能解释一下为什么第一个案例无法运行?谢谢。
区别在于 shell 处理反斜杠的方式:
当你写的时候"\\"
在双引号中,shell 解释反斜杠转义并最终传递字符串\
到 grep。然后,Grep 会看到一个没有后续字符的反斜杠,因此它会发出“尾随反斜杠”警告。如果要使用双引号,则需要应用两级转义,一层用于 shell,一层用于 grep。结果:"\\\\"
.
当你写的时候'\\'
在单引号中,shell 会执行以下操作:not做任何解释,这意味着 grep 接收字符串\\
两个反斜杠都完好无损。 Grep 将此解释为转义的反斜杠,因此它会在文件中搜索文字反斜杠字符。
如果不清楚,我们可以使用echo
看看 shell 正在做什么。echo
本身不执行任何反斜杠解释,因此它打印的是 shell 传递给它的内容。
$ echo "\\"
\
$ echo '\\'
\\
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)