【问题标题】:Grep in Ubuntu 14.04Ubuntu 14.04 中的 Grep
【发布时间】:2023-03-03 05:52:21
【问题描述】:

我刚刚将我的 Ubuntu VM 更新到 14.04,在此之前我可以运行 grep 命令

grep -nr "piece of text"

或任何其他 grep 命令,它会在我正在处理的目录中在 2-10 秒内完成。现在由于某种原因(不知道这是否是由更新引起的)在我工作的同一个目录中运行任何 grep 命令似乎只是挂在那里(如果它完成了,idk,因为我不想等待一分钟或所以搜索发生)而不是显示我的结果。对正在发生的事情或我能做些什么并尝试解决它有任何想法吗?

【问题讨论】:

  • 你从哪里执行你的 grep ?它可能会很慢,因为它在目录中递归。
  • 或者升级后它不是使用 gnu grep 而是使用一些 busybox 之一?光盘 /tmp; grep -nr "truc"; => 使用 gnu grep -> 它返回。使用busybox:cd /tmp; busybox grep -nr "truc"; :它读取标准输入。
  • which grep : 它返回什么?

标签: linux ubuntu grep busybox


【解决方案1】:

您没有将文件指定为 grep,因此它正在尝试读取 STDIN。我想你想要

grep -nr "piece of text" *

请注意,星号是globbed,表示当前路径中的所有文件。

【讨论】:

  • 在我的 debian 测试中:cd /tmp;回声“truc”>truc; grep -nr "truc";返回 "truc:1:truc" 。这可能是由于选项“-r”在目录中递归然后不关心 STDIN ?
  • 从 (git://git.savannah.gnu.org/grep.git) 获取 grep 代码:else if (directories == RECURSE_DIRECTORIES && prepended 我猜它在'.'上运行
  • Elliot 你是对的,IDK 为什么我能够使用 grep 而不指定要搜索的目录,但指定搜索位置就可以了。谢谢!
  • @WanMatt 如果问题解决,请不要忘记accept an answer
  • @ElliottFrisch 对不起,我是这里的新手。感谢您的帮助:)
【解决方案2】:

您使用的是哪个grep-r 选项默认为 '.' gnu案例中的目录

which grep :
/bin/grep --version
/bin/grep (GNU grep) 2.18)
...
this is gnu grep :

echo "truc" >/tmp/truc

cd /tmp; grep -nr "truc";

使用 gnu grep -> 递归搜索 .当前目录(此处为/tmp)并显示它们包含“truc”

如果/bin/grep --version 是忙箱:

BusyBox v1.22.1 (Debian 1:1.22.0-8) multi-call binary.

用法:

grep [-HhnlLoqvsriwFEz] [-m N] [-A/B/C N] PATTERN/-e PATTERN.../-f FILE [FILE]...

使用busybox:cd /tmp; busybox grep -nr "truc";

无限期地等待您在 STDIN 上键入文件内容(用 Ctrl+C 停止)。

它将 STDIN 读取为文件(甚至不关心 -n 表示目录递归)。

【讨论】:

    【解决方案3】:

    正如其他人回答的那样,正如 POSIX grepGNU grep 文档所说,您需要为标准 grep 命令指定一些文件。 (但是 GNU grep 默认为当前目录 . 如果 -r 没有给出目录名称;但是如果 -r 根本没有给出,grep 默认读取 @987654332 @ 即 stdin)。

    顺便说一句,我还推荐 ack 实用程序,在 Ubuntu 或 Debian 上打包为 ack-grep package。它不需要任何文件(默认是当前目录下的源代码文件),它避免了无用的非源文件(版本控制或目标文件...):

     ack "piece of text"
    

    另外,在emacs 下,你可以使用M-x grep

    【讨论】:

    • 查看我的评论,从 grep 代码我猜它默认为 '.'对于 -r 选项。那么即使文档另有说明,它也不一定需要 FILE。
    • 谢谢!听说过ack,不知道好不好
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    相关资源
    最近更新 更多