我希望所有的行都有assert_equal而没有亚马逊。
我试过以下但是没有用。
ack assert_equal | xargs ack -v amazon
答案 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