Encapsulation et concepts de POO - TP4
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 à écrire des commandes et scripts pour extraire, filtrer, modifier et analyser des données textuelles.
D'après le document Encapsulation et concepts de POO - TP4
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source
Object-Oriented Programming (OOP) in Java · PDF · 3 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 à écrire des commandes et scripts pour extraire, filtrer, modifier et analyser des données textuelles. Ce TP nécessite un environnement Unix avec AWK et SED installés, ainsi 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 champs dans un fichier.
- Écrire des scripts AWK pour des traitements avancés comme la vérification de la structure d’un fichier.
- Utiliser SED pour modifier, filtrer et transformer le contenu d’un fichier texte.
- Comprendre et appliquer des expressions régulières dans AWK et SED.
- Simuler des commandes Unix classiques (uniq) avec AWK.
Prérequis et installation
- Un système Unix ou Linux avec un terminal.
- AWK installé (version standard GNU AWK recommandée).
- SED installé (version standard GNU SED recommandée).
- Connaissances de base en ligne de commande Unix.
- Notions d’expressions régulières.
Partie I : AWK
Exercice 1 : Commandes AWK de base
Écrire des commandes ou scripts AWK pour réaliser les traitements suivants :
- 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.
Ces commandes permettent de manipuler les lignes et champs d’un fichier, filtrer selon des critères précis, et comparer des valeurs entre lignes successives.
Exercice 2 : Mots avec trois majuscules adjacentes
Écrire un script AWK qui affiche tous les mots contenant au moins trois lettres majuscules consécutives. Ce script utilise une expression régulière pour détecter cette séquence dans chaque mot.
Exercice 3 : Fichiers accessibles en lecture uniquement par les autres utilisateurs
Écrire un script AWK qui affiche les fichiers dont les permissions indiquent que les autres utilisateurs ont uniquement le droit de lecture. Ce script analyse les permissions dans la sortie d’une commande comme ls -l.
Exercice 4 : Dates de connexion des utilisateurs propriétaires de fichiers lisibles par les autres
Écrire un script AWK qui affiche les dates de connexion des utilisateurs propriétaires de fichiers ayant la permission de lecture pour les autres. Ce script croise les informations de fichiers et d’utilisateurs.
Exercice 5 : Lignes avec premier champ différent du précédent
Écrire une commande AWK affichant toutes les lignes dont le premier champ diffère de celui de la ligne précédente. Cela permet de détecter les changements dans une colonne spécifique.
Exercice 6 : Simulation de la commande uniq
Écrire un script AWK qui élimine les lignes redondantes et vides d’un fichier, simulant ainsi le comportement de la commande uniq. Ce script compare chaque ligne à la précédente et ignore les doublons et lignes vides.
Exercice 7 : Vérification du nombre de champs
Écrire un programme AWK qui vérifie que tous les enregistrements d’un fichier donné ont le même nombre de champs que le premier enregistrement. Le fichier utilise le 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, s’il y en a.
Exemple d’exécution :
$ cat test
nom:prenom:ville:telephone:fax
berger:jaques:paris:0639442212:0122339845
ben said:hamadi :71221993::
durond:marcel:marseille
$ 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)
Ce script est utile pour valider la cohérence des fichiers structurés.
Partie II : SED
Exercice 1 : Lignes contenant trois majuscules successives
Donner une commande SED pour afficher uniquement les lignes contenant une séquence de trois lettres majuscules consécutives.
Exercice 2 : Remplacement de mots
Remplacer les mots Computer ou comuter par COMPUTER dans un fichier donné.
Exercice 3 : Encadrer le premier nombre de chaque ligne
Écrire une commande SED qui encadre le premier nombre rencontré dans chaque ligne par des doubles astérisques **.
Exercice 4 : Afficher un fichier à partir de la onzième ligne
Afficher le contenu d’un fichier en commençant à la ligne 11, en supprimant les 10 premières lignes.
Exercice 5 : Imprimer les lignes commençant par "From"
Afficher uniquement les lignes qui débutent par le mot From.
Exercice 6 : Supprimer les lignes contenant une chaîne donnée
Supprimer toutes les lignes contenant une chaîne spécifique dans un fichier.
Exercice 7 : Supprimer les lignes ne contenant pas une chaîne donnée
Supprimer toutes les lignes qui ne contiennent pas une chaîne donnée, ne laissant que celles qui la contiennent.
Exercice 8 : Signification des commandes SED
Tester et comprendre les commandes suivantes :
sed "s/toto/TOTO/" fichier: remplace la première occurrence de "toto" par "TOTO" dans chaque ligne.sed "s/toto/TOTO/3" fichier: remplace la troisième occurrence de "toto" par "TOTO" dans chaque ligne.sed "s/toto/TOTO/g" fichier: remplace toutes les occurrences de "toto" par "TOTO" dans chaque ligne.sed "s/toto/TOTO/w resultat" fichier: remplace la première occurrence de "toto" par "TOTO" et écrit les lignes modifiées dans le fichier "resultat".
Exercice 9 : Inverser les deux premières colonnes
Écrire une commande SED qui inverse l’ordre de la première et de la deuxième colonne d’un fichier, en supposant que les colonnes sont séparées par des espaces ou tabulations.
Exercice 10 : Entourer chaque nombre par deux "a"
Entourer chaque nombre présent dans un fichier par deux lettres "a". Par exemple, le nombre 55 devient a55a.
Exercice 11 : Afficher les lignes contenant le nombre 55
Afficher uniquement les lignes contenant le nombre 55 dans un fichier donné.
Résultats attendus
Après avoir réalisé ces exercices, vous devriez obtenir :
- Des scripts AWK capables d’extraire, filtrer et analyser des fichiers texte selon des critères précis.
- Des commandes SED permettant de modifier et filtrer des fichiers en fonction de motifs complexes.
- Une meilleure maîtrise des expressions régulières et de leur utilisation dans AWK et SED.
- La capacité à vérifier la structure et la cohérence de fichiers structurés.
- Des sorties conformes aux exemples donnés, notamment pour la vérification du nombre de champs et la simulation de
uniq.
Pièges courants
- Confondre le numéro de ligne et le numéro d’enregistrement dans AWK.
- Oublier que AWK utilise par défaut l’espace comme séparateur de champs, et devoir spécifier
-F ":"pour les fichiers colonnes. - Ne pas gérer les lignes vides ou les espaces superflus dans les fichiers, ce qui peut fausser les comptages.
- Dans SED, mal utiliser les délimiteurs ou oublier d’échapper certains caractères spéciaux dans les expressions régulières.
- Ne pas tester les scripts sur plusieurs fichiers pour vérifier leur robustesse.
- Pour les remplacements multiples en SED, oublier le flag
gpour remplacer toutes les occurrences. - Dans les scripts AWK comparant des champs entre lignes, ne pas initialiser correctement la variable stockant la valeur précédente.
Commentaires
Aucun commentaire pour le moment. Posez la première question.