【问题标题】:GNU grep on FreeBSD not working properlyFreeBSD 上的 GNU grep 无法正常工作
【发布时间】:2016-01-21 23:00:24
【问题描述】:

我在使用 grep (GNU grep) 2.5.1-FreeBSD 的 FreeBSD 8.4-STABLE 上有一个奇怪的问题。

如果我尝试 grep -Hnr searchstring 我没有得到任何输出,但 grep 正在运行 ps aux 并一直运行直到我终止进程。

如果我在一个空目录中复制一个测试文件并执行

cat testfile | grep searchstring 它正在工作。

但如果我尝试 grep -Hnr searchstring 在那个目录中我也没有得到任何输出,grep 一直在运行,但没有产生任何匹配。

有人知道怎么解决吗?

【问题讨论】:

    标签: linux shell grep freebsd


    【解决方案1】:

    即使你给了-r,你仍然需要给grep一个文件参数。其他大小,正如您所发现的,它只是坐在那里等待标准输入的输入。

    你想要

    grep -Hnr searchstring .
    # ....................^^
    

    这将递归查找当前目录下的文件。

    【讨论】:

    • 啊,谢谢,在我已经使用此模式的系统上,它以某种方式在没有点的情况下工作。但它就像你说的那样工作,谢谢。
    • GNU grep 版本 2.11+ 当 -r 不带任何参数使用时假定 .。请参阅新功能部分here。我猜 OP 在不知不觉中已经习惯了。
    【解决方案2】:

    虽然它似乎没有记录,但如果您使用 -r 选项调用 grep 并且没有文件或目录名称参数,它默认为当前目录,几乎就像您输入了 grep -R pattern . 一样./ 不会出现在输出中。

    显然这是一个相当新的功能。

    如果您在包含大量内容的目录中执行递归 grep,则可能需要很长时间 - 如果有诸如 /dev/zero 之类的设备文件可以产生无限输出,则可能需要很长时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-01
      相关资源
      最近更新 更多