2012-06-17 1 views
0

J'essaie de faire une recherche dans un répertoire contenant un grand nombre de fichiers html, pour trouver les fichiers qui contiennent les valeurs exactes sur la même ligne. Cela devrait fonctionner:Comment rechercher dans une liste de fichiers plusieurs valeurs existant sur la même ligne?

grep -iwc 'word1' -sl | xargs grep -iwc 'word2' -s 

Mais cela ne fonctionne que sur un fichier à la fois. J'ai essayé quelque chose comme ceci:

find . -iname '*html' | xargs grep -iwc 'word1' -sl | xargs grep -iwc 'word2' -s 

Mais cela semble afficher des fichiers contenant l'un des deux valeurs, de sorte que même ceux qui ne sont pas sur la même ligne.

La sortie ne devrait être les noms de fichiers et le nombre d'occurrences comme:

file.html:2 

Si possible de regrouper ces 2 greps? Ou une autre façon de faire cette recherche?

+0

Recherchez-vous des termes de recherche spécifiques ou recherchez-vous simplement chaque ligne correspondante? –

+0

Je cherche tous les fichiers qui correspondent au même mot1 et mot2 (ou chaîne2) qui sont situés sur la même ligne, et qui sortent comme fichier.html: x où x est le nombre d'occurrences. Il semble que la réponse par phs fait l'affaire :) – Sempiterna

Répondre

0

Une regex étendue peut aider. Quelque chose comme ça peut-être?

find . -iname '*html' | xargs egrep -iwl '(word1.*word2|word2.*word1)' 

Puisque vous avez seulement deux mots que vous recherchez, il est pas trop difficile d'énumérer de toutes les façons de les commander.

+0

Cela semble fonctionner :) Si vous utilisez un mot et une chaîne, cela fonctionnerait aussi, non? Tels que word1 et 'cette chaîne de mots' sur la même ligne, mais sans les guillemets (puisque entre guillemets il ne renvoie rien). – Sempiterna

+0

Oui, tant qu'il peut être formé comme une regex. Lettres et espaces peuvent sans traitement spécial. – phs

+0

Merci pour votre réponse. Vous ne croirez pas combien de temps j'ai cherché ceci. Est-ce que cela peut aussi être étendu pour rechercher word1 AND (word2 OR word3)? – Sempiterna

Questions connexes