我想要所有带有 assert_equal 且没有 amazon 的行。
我尝试关注但它不起作用。
ack assert_equal | xargs ack -v amazon
你不需要 xargs:
ack assert_equal | ack -v amazon
您的命令似乎存在一些问题。在第一部分:
ack assert_equal
你没有提供文件名,所以ack
没有什么要处理的。在第二部分:
xargs ack -v 亚马逊
您正在使用xargs
将初始结果ack
作为命令行参数提供给 second ack
,这可能不是您想要的。 ack
已经设计为接受标准输入上的数据,因此您根本不需要使用xargs
。
这是一个应该更好的声明:
ack assert_equal 文件名 | ack -v 亚马逊
或者,如果您从另一个命令获取输出,例如:
我的命令 | ack assert_equal | ack -v 亚马逊
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
ack
不是 *nix 中的标准工具。既然你有了它,它就可以了。但是如果你在一个没有它的 *nix 系统上,你可以这样做
awk '/assert_equal/&&!/amazon/' file