Introduction aux cascades de filtres sous Unix

De Wicri Manuel

Cette page introduit un ensemble d'exemples permettant de combiner des outils de manipulations de flux de données avec Unix.

Avant propos

Les exemples donnés dans cette page utilise l'environnement DILIB. Avant toute manipulation ne pas oublier d'initialiser l'environnement.

Pour une installation ScienceExplor faire :

source $HOME/Documents/ScienceExplor/Dilib/init.sh

Redirections et Entrées sorties standard

Entrées sorties standard

Toute commande Unix peut utiliser :

  • l'entrée standard (stdin)
  • la sortie standard (stdout)

UnixRdir.gif

  • Valeurs implicites (pour un poste de travail) :
  • stdin : le clavier
  • stdout : l'écran

Redirection de l'entrée standard vers un fichier

UnixInputFile.gif

Soit :

maCommandeUnix = un programme Unix de type filtre
monFichier = un fichier

La commande shell suivante :

maCommandeUnix < monFichier

appliquera le programme maCommandeUnix au fichier monFichier et affichera le résultat sur l'écran.

Exemple avec la commande cat

Dans la bibliothèque DILIB, le fichier $DILIB/data/Wicri/Metadata/IsoC2ToPays.tab contient une liste de couples « code ISO - pays » avec la tabulation comme séparateur. La commande cat :

cat < $DILIB/data/Wicri/Metadata/IsoC2ToPays.tab

recopie le fichier sur l'écran.

Exemple avec la commande grep

La commande grep permet de sélectionner des lignes à partir d'un paramètre donné en première position. Pour imprimer les noms de pays qui contiennent le mot « Sud », il faut faire :

grep Sud < $DILIB/data/Wicri/Metadata/IsoC2ToPays.tab

Redirection de la sortie standard vers un fichier

La sortie standard peut à son tour être redirigée vers un fichier en utilisant le caractère « > ».

Par exemple, pour mémoriser la date (et l'heure) en cours dans un fichier, il suffit d'écrire :

date > maDate.txt

Faire un ls pour vérifier la présence du fichier et un cat pour vérifier le contenu.

Combinaison simple des redirections

Entrée et sortie standard peuvent être rédirigées simultanément.

ainsi :

cat < fA > fB

copie le contenu du fichier fA pour créer le fichier fB.

Combinaison de filtres en cascade

Le mécanisme pipe d'Unix

Les systèmes Unix dispose d'un mécanisme pour enchaîner des filtres.

UnixPipe.gif

Le mécanisme appelé « pipe » permet d'enchaîner des commandes en affectant la sortie de l'une à l'entrée de la suivante. Sa forme générale est :

c0 < fA | c1 | c2 | ... | cn > fB

Le fichier fA est lu par c0, le résultat est alors traité par c1, et ainsi de suite jusqu'à cn qui inscrit le résultat dans fB.

Exemple avec les commandes grep et wc

La commande wc (words count) permet de connaitre diverses informations sur un fichier (nombre de lignes, de mots et de caractères).

Ainsi la ligne ci dessous donne le nombre de pays qui contiennent le mot Sud.

grep Sud < $DILIB/data/Wicri/Metadata/IsoC2ToPays.tab | wc

Exercices :

Voir aussi

Sur ce wiki