Correction Atelier 7: Filtres et manipulation du texte

Ce matériel couvre les commandes Unix de filtrage et de manipulation de texte, notamment l’utilisation de grep et find. Il s’adresse aux étudiants en informatique ou toute personne souhaitant maîtriser les outils de recherche et de traitement de fichiers en ligne de commande. Filtres et recherche avec grep La commande grep permet de rechercher des motifs dans des fichiers texte.

D'après le document Correction Atelier 7: 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 7: Filtres et manipulation du texte

Shell Scripting and Command-Line Utilities · Institut Supérieur des Études Technologiques · DOCX · 3 pages

Consulter le document original →

Ce matériel couvre les commandes Unix de filtrage et de manipulation de texte, notamment l’utilisation de grep et find. Il s’adresse aux étudiants en informatique ou toute personne souhaitant maîtriser les outils de recherche et de traitement de fichiers en ligne de commande.

Filtres et recherche avec grep

La commande grep permet de rechercher des motifs dans des fichiers texte. Voici plusieurs exemples d’utilisation basés sur des fichiers contenant les jours de la semaine et les mois de l’année.

Exemple 1 : Recherche dans un fichier contenant les jours de la semaine

  • Créer un fichier semaine avec chaque jour sur une ligne.
  • Afficher les lignes commençant par la lettre « m » :
grep '^m' semaine

Le symbole ^ indique le début de la ligne, donc seules les lignes débutant par « m » seront affichées.

Exemple 2 : Recherche dans un fichier contenant les mois de l’année

  • Créer un fichier annee avec chaque mois sur une ligne.
  • Afficher les lignes se terminant par la lettre « r » :
grep 'r$' annee

Le symbole $ indique la fin de la ligne.

  • Afficher les lignes contenant la sous-chaîne « ui » :
grep 'ui' annee
  • Afficher les lignes contenant « ui » précédée et suivie d’un caractère :
grep '\<.ui.\>' annee

Les symboles \< et \> délimitent un mot, et . représente un caractère quelconque.

Exemple 3 : Fusion et comparaison de fichiers

  • Fusionner les fichiers semaine et annee dans un fichier calendrier :
paste semaine annee > calendrier
  • Copier calendrier dans /tmp, modifier la copie, puis comparer :
cp calendrier /tmp/calendrier
vi /tmp/calendrier
cmp calendrier /tmp/calendrier

La commande cmp affiche les différences entre les deux fichiers.

Recherche avancée avec grep

Le fichier test_grep.txt contient des lignes variées avec lettres minuscules, majuscules, chiffres et ponctuation. Voici des recherches courantes :

  • Lignes commençant par « a » ou « A » (insensible à la casse) :
grep -i '^a' test_grep.txt
  • Lignes finissant par « rs » :
grep 'rs$' test_grep.txt
  • Lignes contenant au moins un chiffre :
grep '[0-9]' test_grep.txt
  • Lignes commençant par une majuscule :
grep '^[A-Z]' test_grep.txt
  • Lignes commençant par « B », « E » ou « Q » :
grep '^[BEQ]' test_grep.txt
  • Lignes finissant par un point d’exclamation :
grep '\!$' test_grep.txt
  • Lignes ne finissant pas par un signe de ponctuation (., ; : ? !) :
grep -v '[.,;:?\!]$' test_grep.txt
# ou
grep '[^.,;:?\!]$' test_grep.txt
  • Mots contenant un « r » précédé d’une lettre majuscule ou minuscule :
grep '[a-zA-Z]r' test_grep.txt
  • Mots dont la seconde lettre est un « r » :
grep '\<.r' test_grep.txt

Recherche de fichiers avec find

La commande find permet de rechercher des fichiers ou répertoires selon divers critères.

Exemples de recherche

  • Rechercher un fichier ordinaire nommé tp1.txt dans son répertoire personnel :
find . -type f -name tp1.txt -print
  • Rechercher un répertoire nommé tpunix dans son répertoire personnel :
find . -type d -name tpunix -print
  • Rechercher tous les fichiers ordinaires appartenant à l’utilisateur iset dans tout le système :
find / -type f -user iset -print
  • Faire la même recherche en éliminant les messages d’erreur et paginer le résultat :
find / -type f -user iset 2>/dev/null | less
  • Créer un fichier hebdo.txt listant les fichiers modifiés il y a moins d’une semaine :
find / -type f -user iset -mtime -7 > hebdo.txt 2>/dev/null
  • Compter le nombre de fichiers trouvés dans la recherche précédente :
find / -type f -user iset -mtime -7 2>/dev/null | wc -l
  • Rechercher les fichiers dont la permission d’écriture est accordée aux autres ou qui appartiennent à l’utilisateur iset :
find / -type f \( -perm -002 -o -user iset \) -print

Recherche avancée avec -exec

Afficher les informations détaillées des fichiers ordinaires dans ./cours/ dont le nom commence par ts_ ou algo et dont l’extension est adb ou ads :

find ./cours -type f -name \( 'ts_*.ad[bs]' -o -name 'algo*.ad[bs]' \) -exec ls -l {} \;

Cette commande utilise l’option -exec pour exécuter ls -l sur chaque fichier trouvé.

Glossaire des termes clés

  • grep : commande Unix pour rechercher des motifs dans un fichier texte.
  • ^ : symbole indiquant le début d’une ligne dans une expression régulière.
  • $ : symbole indiquant la fin d’une ligne dans une expression régulière.
  • . : caractère générique représentant un caractère quelconque dans une expression régulière.
  • \< et \> : délimitent le début et la fin d’un mot dans grep.
  • paste : commande Unix pour fusionner des fichiers ligne par ligne.
  • cmp : commande Unix pour comparer deux fichiers et afficher leurs différences.
  • find : commande Unix pour rechercher des fichiers ou répertoires selon des critères.
  • -type f : option de find pour rechercher uniquement les fichiers ordinaires.
  • -type d : option de find pour rechercher uniquement les répertoires.
  • -name : option de find pour rechercher selon le nom.
  • -user : option de find pour rechercher les fichiers appartenant à un utilisateur donné.
  • -mtime : option de find pour rechercher selon la date de modification.
  • -perm : option de find pour rechercher selon les permissions d’accès.
  • -exec : option de find pour exécuter une commande sur chaque fichier trouvé.
  • 2>/dev/null : redirection des messages d’erreur vers le néant pour ne pas les afficher.
  • wc -l : commande pour compter le nombre de lignes.

Points clés à retenir

  • grep est essentiel pour filtrer du texte avec des expressions régulières simples ou complexes.
  • Les symboles ^ et $ permettent de cibler le début ou la fin des lignes.
  • find est un outil puissant pour localiser des fichiers selon plusieurs critères, y compris permissions et date.
  • La redirection 2>/dev/null est utile pour supprimer les messages d’erreur lors de recherches sur tout le système.
  • L’option -exec de find permet d’appliquer une commande à chaque fichier trouvé.
  • La combinaison de commandes Unix permet d’automatiser efficacement la manipulation et la recherche de fichiers.

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