2013-04-11 1 views

Répondre

1

Vous pouvez enchaîner vos appels grep à l'aide des canaux |. Comme ceci:

grep 'Error' file.txt | grep 'Database' 

Cet exemple fictif vous donnera tous les messages d'erreur provenant d'un fichier qui sont liés à la base de données.

+0

1) votre exemple ne recherche pas dans les sous-répertoires '', 2) votre exemple ne recherche pas 'sur les fichiers qui correspondent à modèle A'. Pour cela, vous pouvez utiliser xargs, qui prend l'argument de la sortie de la commande précédente et l'envoie à la commande suivante. Donc 'grep -l' vous donnera des noms de fichiers, ceux que vous pouvez envoyer via xargs au prochain grep. – abasu

+0

Confirmé. Mais la question est difficile à comprendre. Savez-vous aussi ce que cela signifie: 'et ensuite sur les fichiers qui correspondent au motif A, imprimez le résultat du motif correspondant B? – hek2mgl

+0

Je pense qu'il a une structure de répertoire où, au niveau aléatoire, n'importe quel fichier peut contenir 2 modèles, il veut trouver ces fichiers. donc mon approche sera 'grep -rl pattern1 * | xargs grep pattern2' ou quelque chose comme ça. fidèle à vos mots :) question n'est pas très claire – abasu

0
find <BASEDIR>/ -name "*PATTERN_A*" | xargs grep PATTERN_B 

Je crois que ce sera réaliser ce que vous cherchez :)

+0

Oui, c'est ce que je cherchais. Je vous remercie –