【发布时间】:2017-03-06 06:09:13
【问题描述】:
我有这个带有特殊字符的特殊文件:
^S^H^B^R^MLong is here
^X^M
当我通过grep -r "Long is here" . 搜索它时,它会给我以下结果,而不是显示它的文件路径:
Long is here
但是,如果我删除^S^H^B^R^M,文件路径就会显示出来:
./CIQla:Long is here
我正在使用 OSX。
这是怎么回事?
编辑:
我用 BSD grep (grep 2.5.1-FreeBSD) 和 GNU grep (ggrep 2.26) 都试过了
【问题讨论】:
-
如果你也使用
-H来打印文件名呢?一般来说,grep如果只有一个匹配项,则不会打印文件名。 -
-Hoption isdefault when there is more than one file to search... 我认为这些特殊字符正在覆盖 grep 输出中的字符 -
@fedorqui
-H不会显示文件路径,但-l会。但是,这些特殊字符如何阻止 grep 打印文件路径对我来说仍然是个谜…… -
检查
man grep-H的工作原理,因为它确实显示了文件路径。-l所做的只是 显示路径。