1

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

我尝试关注但它不起作用。

ack assert_equal | xargs ack -v amazon
4

4 回答 4

4

你不需要 xargs:

ack assert_equal | ack -v amazon
于 2010-03-10T18:56:55.427 回答
1

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

ack assert_equal

你没有提供文件名,所以ack没有什么要处理的。在第二部分:

xargs ack -v 亚马逊

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

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

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

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

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

于 2010-03-10T19:00:54.127 回答
0

this snippet should give you an idea as to what you need to do. The magic is in the -print0 option. Not a direct solution; i'm feeling lazy.

ack -f --print0 --php -G 'scripts' --invert-file-match|xargs -0 ls -l
于 2012-03-06T04:32:17.173 回答
0

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

awk '/assert_equal/&&!/amazon/' file
于 2010-03-10T23:48:53.463 回答