TP4: Encapsulation et Concepts de POO
Ce TP permet de se familiariser avec les outils Unix AWK et SED pour le traitement de texte et la manipulation de fichiers. Il propose une série d'exercices pratiques visant à maîtriser des commandes et scripts capables d'extraire, modifier ou analyser des données textuelles.
D'après le document TP4: Encapsulation et Concepts de POO
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source
Programming and Object-Oriented Concepts · PDF · 2 pages · 2000
Afficher l'aperçu du document
Ce TP permet de se familiariser avec les outils Unix AWK et SED pour le traitement de texte et la manipulation de fichiers. Il propose une série d'exercices pratiques visant à maîtriser des commandes et scripts capables d'extraire, modifier ou analyser des données textuelles. Pour réaliser ce TP, un environnement Unix avec AWK et SED installés est nécessaire, ainsi que des connaissances de base en ligne de commande et en expressions régulières.
Objectifs
- Utiliser AWK pour extraire, compter et filtrer des lignes et des champs dans un fichier.
- Écrire des scripts AWK pour des traitements avancés comme la vérification de la structure d'un fichier ou la simulation de commandes Unix.
- Appliquer des commandes SED pour rechercher, remplacer, supprimer ou modifier des lignes dans un fichier.
- Comprendre et manipuler les expressions régulières dans un contexte Unix.
Prérequis et installation
- Un système Unix ou Linux avec un terminal accessible.
- AWK installé (version standard compatible POSIX).
- SED installé (version standard compatible POSIX).
- Connaissances de base en ligne de commande Unix.
- Notions élémentaires d'expressions régulières et de manipulation de fichiers texte.
Partie I : AWK
Exercice 1 : Commandes AWK de base
Réaliser les traitements suivants avec AWK :
- Afficher la nième ligne d’un fichier.
- Compter le nombre de mots d’un fichier.
- Afficher les lignes de plus de 80 caractères.
- Afficher les lignes qui contiennent exactement deux champs.
- Afficher la liste des champs de chaque ligne dans un ordre inversé.
- Compter le nombre de lignes qui contiennent la chaîne "l2ti".
- Afficher toutes les lignes dont le premier champ est différent de celui de la ligne précédente.
But : Apprendre à manipuler les lignes, champs et conditions dans AWK.
Résultat attendu : Chaque commande doit produire la sortie correspondant au critère demandé. Par exemple, pour afficher la nième ligne, la commande doit extraire uniquement cette ligne.
Exercice 2 : Recherche de mots avec trois lettres majuscules adjacentes
Écrire un script AWK qui affiche tous les mots contenant au moins trois lettres majuscules consécutives.
But : Utiliser les expressions régulières dans AWK pour filtrer des mots selon un motif précis.
Résultat attendu : La sortie doit lister uniquement les mots respectant ce critère.
Exercice 3 : Fichiers accessibles en lecture par les autres utilisateurs
Écrire un script AWK pour afficher tous les fichiers qui sont accessibles uniquement en lecture par les autres utilisateurs.
But : Apprendre à analyser les permissions des fichiers dans une liste (par exemple issue de la commande ls -l).
Résultat attendu : La liste des fichiers avec la permission de lecture pour les autres utilisateurs uniquement.
Exercice 4 : Dates de connexion des utilisateurs propriétaires de fichiers
Écrire un script AWK qui affiche les dates de connexion des utilisateurs propriétaires des fichiers ayant la permission de lecture pour les autres utilisateurs.
But : Croiser des informations sur les fichiers et les utilisateurs.
Résultat attendu : Affichage des dates de connexion correspondantes.
Exercice 5 : Lignes avec premier champ différent du précédent
Écrire une commande AWK permettant d’afficher toutes les lignes dont le premier champ est différent de celui de la ligne précédente.
But : Filtrer les lignes selon la variation d’un champ entre lignes consécutives.
Résultat attendu : Affichage des lignes où le premier champ change.
Exercice 6 : Simulation de la commande uniq
Écrire un script AWK qui élimine les lignes redondantes et vides d’un fichier, simulant ainsi la commande « uniq ».
But : Comprendre la suppression des doublons et des lignes vides.
Résultat attendu : Fichier sans lignes répétées ni lignes vides.
Exercice 7 : Vérification du nombre de champs dans un fichier
Écrire un programme AWK qui vérifie que tous les enregistrements (lignes) d’un fichier donné en argument ont le même nombre de champs que le premier enregistrement. Le fichier utilise ":" comme séparateur de champs.
Le script doit :
- Afficher pour chaque ligne erronée son nombre de champs.
- Afficher à la fin le nombre total d’enregistrements.
- Afficher le nombre d’enregistrements erronés (ayant un nombre de champs différent).
Exemple d’exécution :
$ cat test
nom:prenom:ville:telephone:fax
berger:jaques:paris:0639442212:0122339845
ben said:hamadi :71221993::
$ awk -f count.awk test
Chaque enregistrement doit comporter 5 champs
Enregistrement 4 a 3 champs
Le fichier test possède 4 enregistrements
Le fichier test comporte 1 enregistrement(s) erroné(s)
But : S’assurer de la cohérence structurelle d’un fichier de données.
Résultat attendu : Messages indiquant les lignes incorrectes et le bilan final.
Partie II : SED
Commandes SED à réaliser
Réaliser les traitements suivants avec SED :
- Afficher les lignes contenant trois majuscules successives.
- Remplacer les mots "Computer" ou "comuter" par "COMPUTER".
- Encadrer le premier nombre de chaque ligne avec des ** (double astérisque).
- Afficher un fichier à partir de la onzième ligne.
- Imprimer les lignes commençant par le mot "From".
- Supprimer les lignes contenant une chaîne donnée.
- Supprimer les lignes ne contenant pas une chaîne donnée.
- Tester et comprendre les commandes suivantes :
- sed "s/toto/TOTO/" fichier
- sed "s/toto/TOTO/3" fichier
- sed "s/toto/TOTO/g" fichier
- sed "s/toto/TOTO/w resultat" fichier
- Inverser l’ordre de la première et la deuxième colonne d’un fichier.
- Entourer chaque nombre contenu dans un fichier par deux "a".
- N’afficher que les lignes contenant le nombre 55 d’un fichier donné.
But : Apprendre à utiliser SED pour rechercher, remplacer, supprimer et modifier des lignes selon des critères précis.
Résultat attendu : Chaque commande doit produire la sortie attendue selon la description.
Résultats attendus
- Extraction précise de lignes ou champs selon les critères définis.
- Comptages exacts (nombre de mots, de lignes, d’enregistrements erronés).
- Affichage correct des lignes filtrées (ex : lignes avec trois majuscules successives).
- Remplacements et modifications corrects dans les fichiers (ex : mots remplacés, colonnes inversées).
- Scripts AWK et commandes SED fonctionnels sans erreurs de syntaxe.
Erreurs courantes
- Oublier de spécifier le séparateur de champs dans AWK pour les fichiers utilisant ":" (exercice 7).
- Confondre les indices de champs dans AWK (le premier champ est $1, pas $0).
- Ne pas gérer les lignes vides ou les espaces superflus dans les scripts AWK.
- Utiliser des expressions régulières incorrectes ou incomplètes dans AWK ou SED.
- Ne pas tester les scripts sur plusieurs fichiers pour vérifier leur robustesse.
- Oublier les options globales dans SED pour remplacer toutes les occurrences (ex : le flag "g").
- Ne pas sauvegarder les modifications dans un fichier ou ne pas rediriger la sortie correctement.
Commentaires
Aucun commentaire pour le moment. Posez la première question.