Correction Atelier 6: Filtres et manipulation du texte
Ce laboratoire permet de se familiariser avec les filtres et la manipulation de texte sous Linux. Il propose des exercices pratiques sur des fichiers texte, notamment la gestion de listes, le tri, la découpe et l'extraction de champs à l'aide de commandes comme head, tail, cut, sort, split, et wc.
D'après le document Correction Atelier 6: Filtres et manipulation du texte
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.
Document source
Shell Command Line Basics and File Manipulation · DOCX · 2 pages
Ce laboratoire permet de se familiariser avec les filtres et la manipulation de texte sous Linux. Il propose des exercices pratiques sur des fichiers texte, notamment la gestion de listes, le tri, la découpe et l'extraction de champs à l'aide de commandes comme head, tail, cut, sort, split, et wc. Pour réaliser ce TP, un environnement Linux avec un terminal est nécessaire, ainsi qu'un accès au fichier /etc/passwd pour certains exercices.
Objectifs
- Savoir afficher et manipuler des parties spécifiques d'un fichier texte.
- Apprendre à trier, découper et renuméroter des fichiers sans éditeur de texte.
- Utiliser les commandes cut, sort, head, tail, split, wc pour extraire et transformer des données.
- Comprendre la structure d'un fichier système comme /etc/passwd et en extraire des informations.
Prérequis et installation
- Un système Linux avec un terminal.
- Connaissances de base en ligne de commande Linux.
- Accès au fichier /etc/passwd pour l'exercice 3.
- Les commandes head, tail, cut, sort, split, wc, less, echo, cat doivent être disponibles.
Exercice 1 : Manipulation de fichiers texte
Dans cet exercice, vous créez un fichier texte nommé villes.txt contenant la liste des gouvernorats de Tunisie avec leur numéro et préfixe téléphonique. Vous utiliserez ensuite différentes commandes pour afficher, modifier et découper ce fichier.
Étapes :
- Créer le fichier
villes.txtavec la forme :
Numero : NomGouvernorat :PrefixeTelephone - Afficher le fichier page par page avec la commande :
less villes.txt - Afficher les 10 premières lignes :
head villes.txt - Afficher les 4 dernières lignes :
tail -n 4 villes.txt - Afficher le fichier sans ses 3 dernières lignes :
head -n -3 villes.txt - Afficher le fichier sans ses 5 premières lignes :
tail -n +6 villes.txt - Afficher les lignes 7 à 13 :
head -n 13 villes.txt | tail -n +7
24 gouvernorats en Tunisie avec l'une des commandes :cat >> villes.txt
24 gouvernorats en Tunisie
ctrl-d
ouecho '24 gouvernorats en Tunisie' >> villes.txt
wc -lw villes.txt
villes.txt en fichiers de 6 lignes maximum :split -l 6 villes.txt
wc -l xa*
Pourquoi : Ces commandes permettent de manipuler efficacement des fichiers texte, d'extraire des portions spécifiques, d'ajouter du contenu et de vérifier la structure des fichiers.
Exercice 2 : Tri et transformation de fichiers
Ce deuxième exercice consiste à trier le fichier villes.txt selon le nom des gouvernorats, à modifier son contenu et à créer de nouveaux fichiers à partir de ce tri.
Étapes :
- Trier
villes.txtselon le nom (champ 2), séparateur:, et sauvegarder dansvillesTriees.txt:
sort -t : -k2,2 villes.txt > villesTriees.txt - Supprimer la première ligne (souvent un en-tête) :
tail -n +2 villesTriees.txt > villesTriees1.txt ; mv villesTriees1.txt villesTriees.txt - Supprimer le numéro initial de chaque ligne et renuméroter sans utiliser un éditeur :
cut -d : -f2,3 villesTriees.txt | nl > villesTriees1.txt ; mv villesTriees1.txt villesTriees.txt - Créer
villeReverse.txtavec les lignes triées par ordre décroissant, en remplaçant:par#:
sort -t : -r -k2,2 villes.txt | tr ':' '#' > villesReverse.txt
villesReverse.txt (champ 2, séparateur #) :cut -d# -f2 --output-delimiter '#' villesReverse.txt
villesTotal.txt contenant les 3 premières lignes de tous les fichiers créés, sans entête :head -q -n 3 villes*.txt > villesTotal.txt
Pourquoi : Cet exercice montre comment trier des données, modifier leur format, extraire des champs spécifiques et combiner des extraits de plusieurs fichiers.
Exercice 3 : Utilisation de la commande cut
Ce dernier exercice porte sur l'extraction d'informations depuis le fichier système /etc/passwd et sur la manipulation de sorties de commandes.
1. Traitement de lignes
Le fichier /etc/passwd est organisé en champs séparés par des : :
- nom_utilisateur : nom de l’utilisateur
- x : mot de passe remplacé par x pour sécurité
- uuid : identifiant utilisateur
- guid : identifiant groupe principal
- commentaire : commentaire (souvent nom du groupe)
- home : répertoire personnel
- shell : interpréteur de commandes
Commandes :
- Afficher uniquement les noms d’utilisateur et leur numéro (champ 1 et 3) :
cut -d: -f1,3 /etc/passwd - Modifier la commande précédente pour séparer les champs par un
#:
cut -d: -f1,3 --output-delimiter '#' /etc/passwd
2. Traitement de caractères
Afficher les détails du répertoire courant :
ls -l
En supposant que la taille des fichiers est comprise entre les caractères 23 et 30, et que le nom commence au caractère 45, combiner ls et cut pour afficher uniquement la taille et le nom, séparés par un tiret :
ls -l | cut -c23-30,45- --output-delimiter '-'
Supprimer la première ligne (ligne total) de cette sortie :
ls -l | cut -c23-30,45- --output-delimiter '-' | tail -n +2
Pourquoi : Ces commandes permettent d'extraire des champs précis dans des fichiers structurés et de manipuler des sorties de commandes pour ne conserver que les informations utiles.
Résultats attendus
- Affichage correct des portions de
villes.txtselon les commandes head, tail, less. - Ajout correct de la ligne "24 gouvernorats en Tunisie" à la fin du fichier.
- Découpage en fichiers de 6 lignes maximum, vérifié par
wc -l. - Fichier
villesTriees.txttrié par nom, sans la première ligne, avec une nouvelle numérotation. - Fichier
villeReverse.txttrié par ordre décroissant, avec séparateur#. - Extraction correcte des noms d’utilisateur et identifiants depuis
/etc/passwd. - Affichage de la taille et du nom des fichiers dans le répertoire courant, sans la ligne "total".
Pièges courants
- Confusion entre les options
-n +Xet-n -Xde head et tail. - Oublier de rediriger la sortie vers un nouveau fichier ou d'écraser l'ancien avec
mv. - Utiliser un mauvais séparateur dans les commandes
cutousort. - Ne pas supprimer la ligne d’en-tête après un tri, ce qui fausse les résultats.
- Dans l'extraction avec
cut -c, mal estimer les positions des caractères, ce qui donne des résultats erronés. - Ne pas utiliser
tail -n +2pour enlever la première ligne dans la sortie dels -l. - Confondre les guillemets simples et doubles dans les commandes echo ou tr, ce qui peut empêcher la bonne substitution des caractères.
Commentaires
Aucun commentaire pour le moment. Posez la première question.