2010-03-10 6 views
1

Je veux toutes les lignes avec assert_equal et sans amazon.xargs ne fonctionne pas

J'ai essayé de suivre mais cela ne fonctionne pas.

ack assert_equal | xargs ack -v amazon 
+0

Qu'est-ce que * "ack" *? – DigitalRoss

+0

@DigitalRoss, ack est un utilitaire find et grep. voir aussi http://betterthangrep.com/ –

+1

Cela devrait probablement être migré vers un super utilisateur. – jdizzle

Répondre

4

Vous n'avez pas besoin xargs:

ack assert_equal | ack -v amazon 
1

Il semble y avoir quelques problèmes avec votre commande. Dans la première partie:

ack assert_equal

vous ne fournissez pas un nom de fichier, donc ack n'a rien à traiter. Dans la deuxième partie:

xargs ack -v amazone

vous utilisez xargs pour fournir les résultats de la ack initiale comme arguments de ligne de commande à la deuxième ack, ce qui est probablement pas ce que vous prévu. ack est déjà conçu pour accepter les données sur l'entrée standard, vous n'avez donc pas besoin d'utiliser xargs.

Voici une déclaration qui devrait fonctionner mieux:

ack nom assert_equal | ack -v amazone

ou, si vous obtenez la sortie d'une autre commande, quelque chose comme:

ma_commande | ack assert_equal | ack -v amazon

+0

ack assert_equal montre des tonnes de données. Merci d'avoir répondu. –

+0

Le 'ack' disponible à partir de betterthangrep.com (comme mentionné par Dave Bacher ci-dessus) ne retournera aucune donnée lorsqu'il est exécuté avec un seul argument (au moins sur ma machine). Un autre programme 'ack', le convertisseur de code Kanji, affichera tout fichier texte fourni tel quel, mais il ne prendra pas d'argument -v donc je suppose que ce n'est pas le cas. Y at-il un troisième 'ack' que vous pourriez utiliser? –

+0

ack n'a pas besoin d'un nom de fichier pour rechercher. Il a seulement besoin d'un motif de recherche. Il suppose qu'il veut rechercher l'arbre entier vers le bas, en commençant par le répertoire courant. –

0

ack n'est pas un outil standard dans * nix. puisque vous l'avez, c'est ok. Mais si vous êtes sur un système * nix qui n'a pas, voici comment vous pouvez le faire

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

cet extrait devrait vous donner une idée de ce que vous devez faire. La magie est dans l'option -print0. Pas une solution directe; Je me sens paresseux.

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