【问题标题】:xargs not workingxargs 不工作
【发布时间】:2012-03-09 07:08:38
【问题描述】:

我想要所有带有 assert_equal 而没有 amazon 的行。

我试过了,但是没有用。

ack assert_equal | xargs ack -v amazon

【问题讨论】:

  • @DigitalRoss,ack 是一个查找和 grep 实用程序。另见betterthangrep.com
  • 这应该迁移到超级用户了。

标签: bash shell xargs ack


【解决方案1】:

你不需要 xargs:

ack assert_equal | ack -v amazon

【讨论】:

    【解决方案2】:

    您的命令似乎存在一些问题。第一部分:

    ack assert_equal

    您没有提供文件名,因此ack 没有要处理的内容。在第二部分:

    xargs ack -v 亚马逊

    您正在使用xargs 将初始ack 的结果作为命令行参数提供给第二个ack,这可能不是您想要的。 ack 已经设计为接受标准输入数据,因此您根本不需要使用 xargs

    下面是一个更好的说法:

    ack assert_equal 文件名 | ack -v 亚马逊

    或者,如果您从另一个命令获取输出,例如:

    我的命令 | ack assert_equal | ack -v 亚马逊

    【讨论】:

    • betterthangrep.com 提供的ack(如上面 Dave Bacher 所述)在使用单个参数运行时不会返回任何数据(至少在我的机器上)。另一个ack 程序,汉字代码转换器,将输出按原样提供的任何文本文件,但它不接受 -v 参数,所以我猜不是它。您可能正在使用第三个ack 吗?
    • ack 不需要文件名来搜索。它只需要一个搜索模式。它假设它想从当前目录开始向下搜索整个树。
    【解决方案3】:

    这个 sn-p 应该让你知道你需要做什么。神奇之处在于 -print0 选项。不是直接的解决方案;我觉得很懒。

    ack -f --print0 --php -G 'scripts' --invert-file-match|xargs -0 ls -l
    

    【讨论】:

      【解决方案4】:

      ack 不是 *nix 中的标准工具。既然你有了它,它就可以了。但是如果你在一个没有它的 *nix 系统上,你可以这样做

      awk '/assert_equal/&&!/amazon/' file
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-04
        • 2011-09-30
        • 2017-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-05
        相关资源
        最近更新 更多