14. Laboratoire 02 — filtres, composition et données
14.1 Outils de flux
L'exercice 8 documente les outils suivants :
| Commande | Fonction principale |
|---|---|
tac |
Afficher les lignes en ordre inverse |
less |
Parcourir un texte page par page |
find |
Rechercher des entrées dans une arborescence |
grep |
Conserver les lignes correspondant à un motif |
sort |
Trier des lignes selon le mode choisi |
uniq |
Supprimer ou compter les répétitions adjacentes |
wc |
Compter lignes, mots ou octets/caractères |
head, tail |
Lire le début ou la fin d'un flux |
du |
Mesurer l'espace occupé par des fichiers ou dossiers |
curl |
Émettre une requête réseau et écrire la réponse |
sed |
Transformer un flux ligne par ligne |
awk |
Sélectionner, calculer et reformater des champs |
kill |
Envoyer un signal à un processus |
sleep |
Suspendre l'exécution pendant une durée |
La philosophie Unix favorise des programmes indépendants lisant et écrivant des flux textuels simples. Cette interface réduit le couplage et rend les composants remplaçables.
14.2 Exercices 9 à 14
| Exercice | Transformation |
|---|---|
| 9 | grep Error filtre messages.txt vers ~/errors.txt |
| 10 | uniq retire les doublons adjacents vers ~/errors_2.txt |
| 11 | sed transforme Error 4xx en Warning 4xx vers ~/errors_3.txt |
| 12 | `grep |
| 13 | find + du -sb + tri décroissant + head trouvent les cinq plus gros fichiers |
| 14 | awk + sort + head extraient les noms associés aux dix plus petites tailles d'un TSV |
uniq ne supprime que les doublons adjacents. Dans un cas général, il faut souvent trier avant; les données de l'atelier sont préparées pour la séquence demandée.
14.3 Opérateurs
| Forme | Sens |
|---|---|
a ; b |
Exécuter b après a sans dépendre du statut de a |
a && b |
Exécuter b seulement si a retourne 0 |
| `a | |
| `a | b` |
> |
Remplacer un fichier par la sortie |
>> |
Ajouter la sortie à la fin |
< |
Lire l'entrée depuis un fichier |
<<EOF |
Fournir plusieurs lignes jusqu'au délimiteur |
2>&1 |
Faire suivre à l'erreur standard la destination actuelle de la sortie standard |
Le code de sortie 0 représente conventionnellement le succès. $? contient le code de la dernière commande. Cette valeur alimente le contrôle de flux des scripts.
14.4 Incohérences du solutionnaire
Le PDF de solution contient quelques erreurs typographiques : mdkdir au lieu de mkdir, redirections omises dans certains blocs des exercices 9 à 11, séparateur de chemin incohérent et commentaire mentionnant le port 8080 alors que les commandes et corrections utilisent 8000. Les scripts correction_nn.sh et l'énoncé actuel tranchent ces ambiguïtés.