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

Correction Atelier 6: Filtres et manipulation du texte

Shell Command Line Basics and File Manipulation · DOCX · 2 pages

Consulter le document original →

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.txt avec 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
  • Ajouter à la fin la ligne : 24 gouvernorats en Tunisie avec l'une des commandes :
    cat >> villes.txt
    24 gouvernorats en Tunisie
    ctrl-d
    ou
    echo '24 gouvernorats en Tunisie' >> villes.txt
  • Afficher le nombre de lignes et de mots :
    wc -lw villes.txt
  • Découper villes.txt en fichiers de 6 lignes maximum :
    split -l 6 villes.txt
  • Vérifier le nombre de lignes dans les fichiers générés :
    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.txt selon le nom (champ 2), séparateur :, et sauvegarder dans villesTriees.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.txt avec les lignes triées par ordre décroissant, en remplaçant : par # :
      sort -t : -r -k2,2 villes.txt | tr ':' '#' > villesReverse.txt
  • Afficher uniquement les noms de villes de villesReverse.txt (champ 2, séparateur #) :
    cut -d# -f2 --output-delimiter '#' villesReverse.txt
  • Créer 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.txt selon 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.txt trié par nom, sans la première ligne, avec une nouvelle numérotation.
    • Fichier villeReverse.txt trié 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 +X et -n -X de 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 cut ou sort.
    • 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 +2 pour enlever la première ligne dans la sortie de ls -l.
    • Confondre les guillemets simples et doubles dans les commandes echo ou tr, ce qui peut empêcher la bonne substitution des caractères.

    Partager

    Commentaires

    Aucun commentaire pour le moment. Posez la première question.

    Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

    ← Toutes les révisions