xargs不工作

时间:2010-03-10 18:50:33

标签: bash shell xargs ack

我希望所有的行都有assert_equal而没有亚马逊。

我试过以下但是没有用。

ack assert_equal | xargs ack -v amazon

4 个答案:

答案 0 :(得分:4)

您不需要xargs:

ack assert_equal | ack -v amazon

答案 1 :(得分:1)

你的命令似乎有几个问题。在第一部分:

  

ack assert_equal

您没有提供文件名,因此ack无需处理。在第二部分:

  

xargs ack -v amazon

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

这是一个应该更好的声明:

  

ack assert_equal filename | ack -v amazon

或者,如果您从另一个命令获得输出,请执行以下操作:

  

my_command | ack assert_equal | ack -v amazon

答案 2 :(得分:0)

ack不是* nix中的标准工具。既然你拥有它,那就没关系。但是如果你使用的是没有它的* nix系统,那么你可以这样做

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

答案 3 :(得分:0)

此代码段应该可以让您了解自己需要做什么。神奇的是-print0选项。不是直接解决方案;我感到很懒。

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