xargs не работает - PullRequest
       35

xargs не работает

1 голос
/ 10 марта 2010

Я хочу все строки с assert_equal и без amazon.

Я попробовал следующее, но оно не работает.

ack assert_equal | xargs ack -v amazon

Ответы [ 4 ]

4 голосов
/ 10 марта 2010

Вам не нужны xargs:

ack assert_equal | ack -v amazon
1 голос
/ 10 марта 2010

Кажется, есть несколько проблем с вашей командой. В первой части:

ack assert_equal

вы не предоставляете имя файла, поэтому ack не имеет ничего для обработки. Во второй части:

xargs ack -v amazon

вы используете xargs для предоставления результатов из начального ack в качестве аргументов командной строки для второго ack, что, вероятно, не соответствует вашим ожиданиям. ack уже предназначен для приема данных на стандартном вводе, поэтому вам вообще не нужно использовать xargs.

Вот утверждение, которое должно работать лучше:

ack assert_equal имя файла | ack -v amazon

или, если вы получаете вывод от другой команды, что-то вроде:

my_command | ack assert_equal | ack -v amazon

0 голосов
/ 06 марта 2012

этот фрагмент должен дать вам представление о том, что вам нужно сделать. Магия в опции -print0. Не прямое решение; мне лень.

ack -f --print0 --php -G 'scripts' --invert-file-match|xargs -0 ls -l
0 голосов
/ 11 марта 2010

ack не является стандартным инструментом в * nix. так как у вас есть, все в порядке. Но если вы работаете в системе * nix, у которой ее нет, вот как вы можете это сделать

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