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
|
grep GNU < gnu_lignes.txt
|