Discuter:Grep

Un article de Wikipédia, l'encyclopédie libre.

Suite à ma modification, une petite explication s'impose. La recherche d'une chaîne par expression régulière s'utilise en passant ladite chaîne entre simples quotes. L'exemple le montrait en utilisant des doubles quotes. Voili, voilà ;)

[modifier] mauvais exemple

J'ai retiré ceci :

« (par exemple avec xargs et find pour rechercher une liste de fichiers : find . -name "*.html" | xargs grep plop) ou des scripts shell. »

Après la phrase :

« grep est un filtre, ce qui lui permet d'être combiné avec d'autres commandes, sous la forme d'un pipeline. »

Deux raisons :

  1. cela n'illustre pas le fait que grep est un filtre (la phrase qui précède), puisque dans ce cas, les fichiers sont passés en ligne de commande et pas par STDIN (c'est xargs qui convertit le STDIN en arguments, grep ne voit donc que des arguments)
  2. la commande find peut retourner des fichiers avec des espaces, ce qui provoquera des erreurs car xargs ne prendra pas de précaution spéciale pour entourer les arguments de quotes. L'utiliser avec rm peut même s'avérer très risqué !

La solution au 2 sous linux est d'utiliser -print0 et xargs -0 :

  find . -name "*.html" -print0 | xargs -0 grep plop

Mais cela ne fonctionne qu'avec le GNU find et GNU xargs, donc je pense préférable de ne pas mentionner cet exemple, puisqu'on se réfère à une commande Unix générale.

mro [d] 29 février 2008 à 12:59 (CET)