Linux Professional Institute Learning Logo.
Passer au contenu principal
  • Accueil
    • Toutes les ressources
    • Supports de Cours LPI
    • Devenez contributeur
    • Publishing Partners
    • Devenez Partenaire de Publication
    • À propos
    • FAQ
    • Contributeurs
    • Feuille de route
    • Contactez-nous
  • LPI.org
3.2 Leçon 2
Sujet 1 : Communauté Linux et carrière dans le logiciel libre
1.1 Évolution de Linux et systèmes d'exploitation populaires
  • 1.1 Leçon 1
1.2 Applications libres majeures
  • 1.2 Leçon 1
1.3 Logiciel à code source ouvert et licences
  • 1.3 Leçon 1
1.4 Compétences informatiques et travail sous Linux
  • 1.4 Leçon 1
Sujet 2 : Trouver son chemin sur un système Linux
2.1 Bases sur la ligne de commande
  • 2.1 Leçon 1
  • 2.1 Leçon 2
2.2 Utilisation de la ligne de commande pour obtenir de l'aide
  • 2.2 Leçon 1
2.3 Utilisation des répertoires et liste des fichiers
  • 2.3 Leçon 1
  • 2.3 Leçon 2
2.4 Création, déplacement et suppression de fichiers
  • 2.4 Leçon 1
Sujet 3 : Le pouvoir de la ligne de commande
3.1 Archivage de fichiers en ligne de commande
  • 3.1 Leçon 1
3.2 Recherche et extraction de données à partir de fichiers
  • 3.2 Leçon 1
  • 3.2 Leçon 2
3.3 Conversion de commandes en script
  • 3.3 Leçon 1
  • 3.3 Leçon 2
Sujet 4 : Le système d'exploitation Linux
4.1 Choix d'un système d'exploitation
  • 4.1 Leçon 1
4.2 Compréhension du matériel informatique
  • 4.2 Leçon 1
4.3 Localisation des données
  • 4.3 Leçon 1
  • 4.3 Leçon 2
4.4 Intégration au réseau
  • 4.4 Leçon 1
Sujet 5 : Sécurité et droits d'accès aux fichiers
5.1 Sécurité élémentaire et identification des catégories d'utilisateurs
  • 5.1 Leçon 1
5.2 Création des utilisateurs et des groupes
  • 5.2 Leçon 1
5.3 Gestion des propriétés et des droits d'accès aux fichiers
  • 5.3 Leçon 1
5.4 Répertoires et fichiers spéciaux
  • 5.4 Leçon 1
How to get certified
  1. Sujet 3 : Le pouvoir de la ligne de commande
  2. 3.2 Recherche et extraction de données à partir de fichiers
  3. 3.2 Leçon 2

3.2 Leçon 2

Certification :

Linux Essentials

Version :

1.6

Thème :

3 La Puissance de la Ligne de Commande

Objectif :

3.2 Recherche et Extraction de données dans des Fichiers

Leçon :

2 sur 2

Introduction

Dans cette leçon, nous allons examiner les outils qui sont utilisés pour manipuler le texte. Ces outils sont fréquemment utilisés par les administrateurs système ou les programmes pour surveiller ou identifier automatiquement des informations spécifiques récurrentes.

Recherche dans les Fichiers avec grep

Le premier outil dont nous parlerons dans cette leçon est la commande grep. grep est l’abréviation de l’expression "global regular expression print" et sa principale fonctionnalité est de rechercher dans des fichiers un motif spécifié. La commande affiche les lignes contenant le motif spécifié, identifié en rouge.

$ grep bash /etc/passwd
root:x:0:0:root:/root:/bin/bash
user:x:1001:1001:User,,,,:/home/user:/bin/bash

grep, comme la plupart des commandes, peut également être modifiée en utilisant des options. Voici les plus courantes :

-i

la recherche est insensible à la casse

-r

la recherche est récursive (elle recherche dans tous les fichiers du répertoire donné et de ses sous-répertoires)

-c

la recherche compte le nombre de résultats

-v

inverser la correspondance, pour afficher les lignes qui ne correspondent pas au terme recherché

-E

active les expressions régulières étendues (nécessaires à certains méta-caractères plus avancés comme | , + et ? )

La commande grep dispose de nombreuses autres options utiles. Consultez sa page de manuel pour en savoir plus.

Les Expressions Régulières

Le deuxième outil est très puissant. Il est utilisé pour décrire des morceaux de texte dans les fichiers, également appelés expressions régulières. Les expressions régulières sont extrêmement utiles pour extraire des données de fichiers texte en construisant des motifs. Elles sont couramment utilisées dans les scripts ou lors de la programmation avec des langages de haut niveau, tels que Perl ou Python.

Lorsque vous travaillez avec des expressions régulières, il est très important de garder à l’esprit que chaque caractère compte et que le motif est écrit dans le but de faire correspondre une séquence spécifique de caractères, appelée chaîne de caractères. La plupart des motifs utilisent les symboles ASCII normaux, tels que les lettres, les chiffres, la ponctuation ou d’autres symboles, mais ils peuvent également utiliser des caractères Unicode afin de correspondre à tout autre type de texte.

La liste suivante explique les méta-caractères d’expressions régulières qui sont utilisés pour former les motifs.

.

Correspond à un seul caractère (sauf nouvelle ligne)

[abcABC]

Fait correspondre un des caractères entre crochets

[^abcABC]

Fait correspondre n’importe quel caractère sauf ceux entre crochets

[a-z]

Correspond à n’importe quel caractère de la plage

[^a-z]

Correspond à n’importe quel caractère sauf ceux de la plage

soleil|lune

Trouve l’une ou l’autre des chaînes énumérées

^

Début d’une ligne

$

Fin de ligne

Toutes les fonctionnalités des expressions régulières peuvent également être implémentées avec grep. Vous pouvez voir que dans l’exemple ci-dessus, le mot n’est pas entouré de guillemets. Pour éviter que le shell n’interprète le méta-caractère lui-même, il est recommandé que le motif le plus complexe se trouve entre guillemets doubles (" "). Pour des raisons pratiques, nous utiliserons des guillemets doubles lors de la mise en œuvre d’expressions régulières. Les autres guillemets conservent leur fonctionnalité normale, comme nous l’avons vu dans les leçons précédentes.

Les exemples suivants soulignent la fonctionnalité des expressions régulières. Nous aurons besoin de données dans le fichier, c’est pourquoi la prochaine série de commandes ne fait qu’ajouter différentes chaînes de caractères au fichier text.txt.

$ echo "aaabbb1" > text.txt
$ echo "abab2" >> text.txt
$ echo "noone2" >> text.txt
$ echo "class1" >> text.txt
$ echo "alien2" >> text.txt
$ cat text.txt
aaabbb1
abab2
noone2
class1
alien2

Le premier exemple est une combinaison de recherche dans le fichier sans et avec des expressions régulières. Afin de bien comprendre les expressions régulières, il est très important de montrer la différence. La première commande recherche la chaîne de caractères exacte, n’importe où sur la ligne, tandis que la deuxième commande recherche les ensembles de caractères qui contiennent l’un des caractères entre crochets. Par conséquent, les résultats des commandes sont différents.

$ grep "ab" text.txt
aaabbb1
abab2
$ grep "[ab]" text.txt
aaabbb1
abab2
class1
alien2

La deuxième série d’exemples montre l’application du méta-caractère de début et de fin de ligne. Il est très important de préciser la nécessité de placer les 2 caractères au bon endroit dans l’expression. Lorsque vous spécifiez le début de la ligne, le méta-caractère doit être avant l’expression, tandis que lorsque vous spécifiez la fin de la ligne, le méta-caractère doit être après l’expression.

$ grep "^a" text.txt
aaabbb1
abab2
alien2
$ grep "2$" text.txt
abab2
noone2
alien2

En plus des méta-caractères expliqués précédemment, les expressions régulières ont également des méta-caractères qui permettent la multiplication du motif spécifié précédemment :

*

Zéro ou plusieurs occurrences du motif précédent

+

Une ou plusieurs occurrences du motif précédent

?

Zéro ou une occurrence du motif précédent

Pour les méta-caractères multiplicateurs, la commande ci-dessous recherche une chaîne qui contient ab, un seul caractère et un ou plusieurs des caractères précédemment trouvés. Le résultat montre que grep a trouvé la chaîne de caractères aaabbb1, correspondant à la partie abbb ainsi qu’à abab2. Comme le caractère + est un caractère d’expression régulière étendue, nous devons passer l’option -E à la commande grep.

$ grep -E "ab.+" text.txt
aaabbb1
abab2

La plupart des méta-caractères sont explicites, mais ils peuvent devenir délicats à la première utilisation. Les exemples précédents représentent une petite partie de la fonctionnalité des expressions régulières. Essayez tous les méta-caractères du tableau ci-dessus pour mieux comprendre leur fonctionnement.

Exercices Guidés

En utilisant grep et le fichier /usr/share/hunspell/en_US.dic, trouvez les lignes qui correspondent aux critères suivants :

  1. Toutes les lignes contenant le mot cat n’importe où sur la ligne.

  2. Toutes les lignes qui ne contiennent aucun des caractères suivants : sawgtfixk.

  3. Toutes les lignes qui commencent par 3 lettres quelconques suivi de la chaîne dig.

  4. Toutes les lignes qui se terminent par au moins un e.

  5. Toutes les lignes qui contiennent l’un des mots suivants : org, kay ou tuna.

  6. Le nombre de lignes qui commencent, ou non, par un c suivi de la chaîne ati.

Exercices d’Exploration

  1. Trouvez l’expression régulière qui correspond aux mots de la ligne “Inclure” et qui ne correspond pas à ceux de la ligne “Exclure” :

    • Inclure : pot, spot, apot

      Exclure : potic, spots, potatoe

    • Inclure : arp99, apple, zipper

      Exclure : zoo, arive, attack

    • Inclure : arcane, capper, zoology

      Exclure : air, coper, zoloc

    • Inclure : 0th/pt, 3th/tc, 9th/pt

      Exclure : 0/nm, 3/nm, 9/nm

    • Inclure : Hawaii, Dario, Ramiro

      Exclure : hawaii, Ian, Alice

  2. Quelle autre commande utile est couramment utilisée pour rechercher dans les fichiers ? Quelles sont les fonctionnalités supplémentaires dont elle dispose ?

  3. En repensant à la leçon précédente, utilisez un des exemples et essayez de rechercher un motif spécifique dans la sortie de la commande, avec l’aide de grep.

Résumé

Dans cet atelier, vous avez appris :

  • Les méta-caractères des expressions régulières

  • Comment créer des motifs avec des expressions régulières

  • Comment rechercher dans les fichiers

Commandes utilisées dans les exercices :

grep

Recherche un caractère ou une chaîne de caractères dans un fichier

Réponses aux Exercices Guidés

En utilisant grep et le fichier /usr/share/hunspell/en_US.dic, trouvez les lignes qui correspondent aux critères suivants :

  1. Toutes les lignes contenant le mot cat n’importe où sur la ligne.

    $ grep "cat" /usr/share/hunspell/en_US.dic
    Alcatraz/M
    Decatur/M
    Hecate/M
    ...
  2. Toutes les lignes qui ne contiennent aucun des caractères suivants : sawgtfixk.

    $ grep -v "[sawgtfixk]" /usr/share/hunspell/en_US.dic
    49269
    0/nm
    1/n1
    2/nm
    2nd/p
    3/nm
    3rd/p
    4/nm
    5/nm
    6/nm
    7/nm
    8/nm
    ...
  3. Toutes les lignes qui commencent par 3 lettres quelconques suivi de la chaîne dig.

    $ grep "^...dig" /usr/share/hunspell/en_US.dic
    cardigan/SM
    condign
    predigest/GDS
    ...
  4. Toutes les lignes qui se terminent par au moins un e.

    $ grep -E "e+$" /usr/share/hunspell/en_US.dic
    Anglicize
    Anglophobe
    Anthropocene
    ...
  5. Toutes les lignes qui contiennent l’un des mots suivants : org, kay ou tuna.

    $ grep -E "org|kay|tuna" /usr/share/hunspell/en_US.dic
    Borg/SM
    George/MS
    Tokay/M
    fortunate/UY
    ...
  6. Le nombre de lignes qui commencent, ou non, par un c suivi de la chaîne ati.

    $ grep -cE "^c?ati" /usr/share/hunspell/en_US.dic
    3

Réponses aux Exercices d’Exploration

  1. Trouvez l’expression régulière qui correspond aux mots de la ligne “Inclure” et qui ne correspond pas à ceux de la ligne “Exclure” :

    • Inclure : pot, spot, apot

      Exclure : potic, spots, potatoe

      Réponse : pot$

    • Inclure : arp99, apple, zipper

      Exclure : zoo, arive, attack

      Réponse : p+

    • Inclure : arcane, capper, zoology

      Exclure : air, coper, zoloc

      Réponse : arc|cap|zoo

    • Inclure : 0th/pt, 3th/tc, 9th/pt

      Exclure : 0/nm, 3/nm, 9/nm

      Réponse : [0-9]th.+

    • Inclure : Hawaii, Dario, Ramiro

      Exclure : hawaii, Ian, Alice

      Réponse : ^[A-Z]a.*i+

  2. Quelle autre commande utile est couramment utilisée pour rechercher dans les fichiers ? Quelles sont les fonctionnalités supplémentaires dont elle dispose ?

    La commande sed. Cette commande permet de trouver et de remplacer des caractères ou des ensembles de caractères dans un fichier.

  3. En repensant à la leçon précédente, utilisez un des exemples et essayez de rechercher un motif spécifique dans la sortie de la commande, avec l’aide de grep.

    J’ai pris une des réponses des exercices d’exploration et j’ai cherché la ligne qui a comme autorisation de groupe : lecture, écriture et exécution. Votre réponse peut être différente, selon la commande que vous avez choisie et le motif que vous avez créé.

    $ cat contents.txt | tr -s " " | grep "^....rwx"

    Cet exercice a pour but de vous montrer que grep peut également recevoir des entrées de différentes commandes et qu’il peut aider à filtrer les informations générées.

Linux Professional Insitute Inc. Tous droits réservés. Visitez le site web du projet _Learning_ : https://learning.lpi.org
Ce travail est sous licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Pas de Modification 4.0 International.

Prochaine leçon

3.3 Conversion de commandes en script (3.3 Leçon 1)

Lire la prochaine leçon

Linux Professional Insitute Inc. Tous droits réservés. Visitez le site web du projet _Learning_ : https://learning.lpi.org
Ce travail est sous licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Pas de Modification 4.0 International.

LPI est une organisation à but non lucratif.

© 2023 Le Linux Professional Institute (LPI) est la référence mondiale en matière de certification et un organisme de soutien aux professionnels de l'Open Source. Avec plus de 200 000 certifiés à son actif, c'est le principal organisme de certification indépendant pour Linux et l'Open Source au monde. Le LPI a certifié des professionnels dans plus de 180 pays, organise des examens en plusieurs langues et compte des centaines de partenaires pour la formation.

Notre objectif est la création d'opportunités économiques et créatives pour tous en rendant accessible au monde entier la certification des connaissances et des compétences en matière d'Open Source.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Contactez-nous
  • Politique en matière de confidentialité et de cookies

Vous avez repéré une erreur ou vous voulez aider à améliorer cette page ? Faites-nous savoir.

© 1999–2023 The Linux Professional Institute Inc. Tous droits réservés.