On Thu, 10 May 2001, Philippe Strauss wrote:

> grep "matrix" *.java | grep "norm" | sed -e "s/\:.*$//g" | sort | uniq

Malheureusement ceci ne retournera que les fichiers qui ont matrix et norm
sur la m�me ligne. Et il nous faut: 

   [ ... ] retouver tous les fichiers *.java du r�pertoire courant qui
   contiennent les patterns "matrix" ET "norm" dans n'importe quel ordre
   d'apparition et pas forc�ment proche l'un de l'autre...

Id�e 1: (utilisation d'un fichier temporaire, bien regarder o� on le met,
         sinon attaque symlink, etc)
   grep -l matrix *.java | sort > $TMP_FILE
   grep -l norm *.java | sort | join $TMP_FILE -
   rm $TMP_FILE

Id�e 2:
   grep -l matrix *.java | xargs grep -l norm

Aide:
   - l'option -l affiche (sur la sortie standard) les fichiers qui
     contienne le motif
   - join peut faire une op�ration similaire � la jointure d'une
     base de donn�es relationnelles
   - xargs ex�cute son argument avec comme param�tre tous les
     textes en entr�e standard, en s'arrangeant pour que la
     limite de ligne de commande soit respect�s (en lan�ant
     plusieurs commandes si n�cessaires).

NB: dans l'id�e 1 on peut continuer avec autant de modifs
que n�cessaire si on met la sortie du join dans $TMP_FILE_2 puis qu'on
renomme en $TMP_FILE. Dans l'id�e 2, ajouter autant de | xargs que
n�cessaire. L'id�e 1 est strictement s�quentielle, l'id�e 2 introduit une
parall�lisation qui limitera, � long terme, l'efficacit�.

--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question. Ouais, pour se d�sabonner aussi.

Répondre à