Correction Atelier 7 : Filtres et manipulation du texte
Exercice 1
1. Créer un fichier semaine contenant les jours de la semaine, chacun sur une ligne et un fichier annee contenant les mois de l’année, chacun sur une ligne
2. Ecrire la commande grep permettant d’afficher :
1. Les lignes de « semaine » commençant par la lettre m
~$ grep ‘^m’ semaine
- 1. Les lignes de « annee » se terminant par la lettre r
~$ grep ‘r$’ annee
- 1. Les lignes de « annee » contenant la sous-chaine « ui » dans une position quelconque
~$ grep ‘ui’ annee
- 1. Les lignes de « annee » contenant la sous-chaine « ui » précédée d’un seul caractère et suivie d’un seul caractère
~$ grep ‘\<.ui.\>’ annee
Publicité
1. Fusionner les deux fichiers dans un troisième appelé « calendrier »
~$ paste semaine annee >calendrier
1. Créer une copie du fichier « calendrier » sous /tmp. Apporter des modifications à cette copie puis visualiser les différences entre les deux fichiers.
~$ cp calendrier /tmp/calendrier
~$ vi /tmp/calendrier
~$ cmp calendrier /tmp/calendrier
Exercice 2
1. Créer un fichier test\_grep.txt contenant des lignes avec des lettres minuscules, des lettres majuscules, des chiffres et des signes de ponctuation à la fin.
~$ vi test\_grep.txt
1. Chercher toutes les lignes commençant par «a» ou «A».
~$ grep –i ‘ ^a’ test\_grep.txt
1. Chercher toutes les lignes finissant par «rs».
Publicité
~$ grep ‘rs$’ test\_grep.txt
1. Chercher toutes les lignes contenant au moins un chiffre.
~$ grep ‘[0-9]’ test\_grep.txt
1. Chercher toutes les lignes commençant par une majuscule.
~$ grep’ ^[A-Z]’ test\_grep.txt
1. Chercher toutes les lignes commençant par «B», «E» ou «Q».
~$ grep ‘^[BEQ]’ test\_grep.txt
1. Chercher toutes les lignes finissant par un point d'exclamation.
~$ grep ‘ \!$’ test\_grep.txt
1. Chercher toutes les lignes ne finissant pas par un signe de ponctuation (point, virgule, point-virgule, deux-points, point d'interrogation, point d'exclamation).
~$ grep –v ‘[., ;:?\!]$’ test\_grep.txt
ou
Publicité
~$ grep ‘[^., ;:?\!]$’ test\_grep.txt
1. Chercher tous les mots contenant un «r» précédé de n'importe quelle lettre majuscule ou minuscule.
~$ grep ‘[a-zA-Z]r’ test\_grep.txt
1. Chercher tous les mots dont la seconde lettre est un «r».
~$ grep ‘\<.r’ test\_grep.txt
Exercice 3
1. Utiliser find pour rechercher le fichier ordinaire tp1.txt dans l’arborescence de votre répertoire personnel.
~$ find . –type f –name tp1.txt -print
1. Utiliser find pour rechercher le répertoire tpunix dans l’arborescence de votre répertoire personnel.
~$ find . –type d –name tpunix -print
1. Utiliser find pour rechercher tous les fichiers ordinaires vous appartenant dans toute l’arborescence du système de fichiers (c’est à dire depuis la racine).
~$ find / -type f –user iset -print
Publicité
1. Reprendre la question précédente et rediriger les sorties de manière à éliminer les messages d’erreur et paginer l’affichage des fichiers trouvés.
~$ find / -type f –user iset 2>/dev/null |less
1. Utiliser find pour créer le fichier hebdo.txt contenant les références des fichiers ordinaires vous appartenant contenus dans l’arborescence du système de fichiers et qui ont été modifiés il y a moins d’une semaine, tout en éliminant les messages d’erreur.
~$ find / -type f –user iset –mtime -7 >hebdo.txt 2>/dev/null
1. Reprendre la question précédente pour, au lieu de créer le fichier hebdo.txt, utiliser wc pour faire afficher le nombre de fichiers trouvés
~$ find / -type f –user iset –mtime -7 2>/dev/null |wc -l
1. Rechercher la liste des fichiers dont la permission d’écriture est accordée aux autres, ou qui vous appartiennent.
~$ find / -type f \( -perm -002 -o -user iset \ )-print
1. Avec une seule commande, faire afficher les informations détaillées de chacun des fichiers ordinaires qui se trouvent dans l’arborescence ./cours/ dont le nom commence par ts\_ ou par algo, et dont l’extension est adb ou ads. Pour cela, utiliser l’option -exec de find.
~$ find ./cours -type f –name \( ts\_\.ad[bs] -o –name algo\.ad[bs] \) –exec ls –l {} \;