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.