next up previous contents Next: Exemple d'un tube complexe. Up: Flux et sed comme Previous: Tutoriel.   Table des matières  

9.3 Tubes et opérateur |

La vraie force des tubes se manifeste lorsqu'un programme peut lire la sortie d'un autre programme. Revenons à la commande grep qui lit à partir de stdin lorsqu'on ne lui confère pas d'arguments. Exécutez grep avec un argument en ligne de commandes (le shell met le curseur à la ligne); ensuite, saisissez quelques lignes comme ceci:

[root@cericon] grep GNU

Une ligne sans ce mot

Une autre ligne sans ce mot

Une ligne avec GNU

Une ligne avec GNU

J'ai compris 


Pour revenir au shell, pressez Ctrl-C. Le comportement par défaut de grep consiste à lire depuis stdin si aucun argument n'est donné. Comme vous pouvez le constater, le fonctionnement normal de la commande est d'afficher le mot GNU lorsqu'il se trouve dans une ligne. Aussi, les lignes qui contiennent GNU sont-elles affichées une seconde fois (puisque vous les introduisez, que la commande lit le texte et vérifie la présence de GNU).

Maintenant, essayez grep GNU mon_fichier.txt | grep Linux. Le premier grep sort toutes les lignes ayant le mot GNU vers stdout. Le signe | indique que toute la sortie de stdout doit être écrite en tant que stdin (ainsi que nous l'avons fait ci-dessus) vers la commande suivante, qui est également un grep. Cette seconde commande grep crible les données pour les lignes contenant le mot Linux. La commande grep est souvent utilisée comme filtre [un système qui trie les données]et peut être employée à de nombreuses reprises.

grep L mon_fichier.txt | grep i | grep n | grep u | grep x 


Le caractère < redirige le contenu d'un fichier à la place de stdin. Dit autrement, le contenu d'un fichier remplace ce qui normalement provient du clavier. Essayez:

grep GNU < gnu_lignes.txt 


next up previous contents Next: Exemple d'un tube complexe. Up: Flux et sed comme Previous: Tutoriel.   Table des matières  
1-01-2006