GNU/Linux >> Tutoriels Linux >  >> Linux

10 exemples pratiques de regex avec grep

Grep ou Global Regular Expression Print est utilisé pour rechercher du texte ou des modèles dans un système Linux. Il peut rechercher dans des fichiers, des répertoires et même des sorties d'autres commandes.

Les expressions régulières sont des modèles qui peuvent correspondre au texte en fonction des besoins de l'utilisateur. Ce sont comme des règles pour la correspondance de modèles.

Grep est souvent utilisé avec des expressions régulières pour rechercher des modèles dans le texte. Voyons quelques exemples pratiques de regex avec grep.

1. Faire correspondre un mot quelle que soit sa casse

Parfois, dans un texte, le même mot peut être écrit de différentes manières. C'est le plus souvent le cas avec les noms propres. Au lieu de commencer par une lettre majuscule, ils sont parfois écrits entièrement en minuscules.

$ grep "[Jj]ayant" 

Les deux versions du mot, quelle que soit leur casse, ont été appariées.

Un autre cas intéressant peut être observé avec le mot « IoT ». Un mot comme celui-ci peut apparaître plusieurs fois dans le texte avec différentes variantes. pour faire correspondre tous les mots quelle que soit la casse, utilisez :

$ grep "[iI][oO][tT]"

2. Correspondance du numéro de mobile en utilisant regex avec grep

Les expressions régulières peuvent être utilisées pour extraire le numéro de mobile d'un texte.

Le format du numéro de mobile doit être connu au préalable. Par exemple, une expression régulière conçue pour faire correspondre les numéros de téléphone portable ne fonctionnera pas pour les numéros de téléphone personnels.

Dans cet exemple, le numéro de mobile au format suivant :91-1234567890 (c'est-à-dire TwoDigit-TenDigit) sera mis en correspondance.

$ grep "[[:digit:]]\{2\}[ -]\?[[:digit:]]\{10\}"

Comme il est évident, seul le numéro de téléphone portable au format mentionné ci-dessus est mis en correspondance.

3. Faire correspondre l'adresse e-mail

Extraire l'adresse e-mail d'un texte est très utile et peut être réalisé à l'aide de grep.

Une adresse e-mail a un format particulier. La partie avant le '@' est le nom d'utilisateur qui identifie la boîte aux lettres. Ensuite, il y a un domaine comme gmail.com ou yahoo.in.

L'expression régulière peut être conçue en gardant ces éléments à l'esprit.

$ grep -E "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}"
  • [A-Za-z0-9._%+-]+ capture le nom d'utilisateur avant "@"
  • [A-Za-z0-9.-]+ capture le nom du domaine sans la partie ".com"
  • .[A-Za-z]{2,6} capture le ".com" ou ".in", etc.

4. Vérificateur d'URL

Une URL a un format particulier de représentation. Une expression régulière peut être créée pour vérifier si une URL est sous une forme appropriée ou non.

Une URL doit commencer par http/https/ftp suivi de "://". Ensuite, il y a le nom de domaine qui peut se terminer par ‘.com’, ‘.in’, ‘.org’ etc.

$ grep -E "^(http|https|ftp):[\/]{2}([a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4})"

-E utilisé dans cet exemple et le précédent signifie un grep étendu qui utilise l'ensemble d'expressions régulières étendues au lieu de l'ensemble d'expressions régulières de base. Cela signifie que certains caractères spéciaux n'ont pas besoin d'être échappés. Cela rend le processus d'écriture d'une regex complexe moins fastidieux. En savoir plus ici.

5. Recherche de fichiers avec une extension particulière

La commande ls affiche tous les fichiers du répertoire courant.

exécuter ls -l donne des informations supplémentaires concernant les fichiers. Grep peut être utilisé avec la commande ls -l pour faire correspondre le modèle dans sa sortie.

Pour récupérer les fichiers enregistrés avec l'extension ".txt", utilisez :

$ ls -l | grep '.txt$' 

6. Rechercher le contenu entre parenthèses

Souvent, les fichiers texte ont un contenu entre parenthèses. Nous pouvons les extraire en utilisant regex avec grep.

$ grep "([A-Za-z ]*)"

La regex choisira le texte qui se trouve dans la parathèse. La longueur du contenu entre parenthèses peut également être spécifiée.

Par exemple, pour faire correspondre les parenthèses avec seulement 10 caractères, utilisez :

$ grep "([A-Za-z ]{10})"

7. Faire correspondre les lignes commençant par un mot particulier

Nous pouvons utiliser regex pour trouver des lignes qui commencent par un mot particulier.

Pour trouver les lignes commençant par le mot Pommes, utilisez :

grep '^Apples' input.txt 

De même, les lignes commençant par n'importe quel autre mot peuvent également être trouvées.

Nous pouvons faire correspondre les lignes se terminant par un mot spécifique en utilisant les expressions régulières ci-dessous.

$ grep 'apples.$' input.txt

8. Faire correspondre plusieurs mots à la fois

Faisons correspondre plusieurs mots avec regex comme indiqué ci-dessous :

$ grep 'Apples\|Orange' input.txt

Cette commande fonctionne ligne un OU entre les deux mots. Il correspond aux lignes qui contiennent l'un ou l'autre des deux mots.

Pour faire un ET entre les deux mots, utilisez :

$ grep 'Apple' input.txt | grep 'Orange

9. Faire correspondre le même mot sous différentes formes

Parfois, un mot peut apparaître sous différentes formes. Ils peuvent différer en fonction du temps auquel ils sont utilisés.

Peeled et Peeling en sont des exemples. Dans les deux mots, le mot racine est "peel"

Nous pouvons utiliser regex pour faire correspondre toutes les formes d'un mot.

Dans notre texte, nous avons orthographié pelé et pelé comme pelé et pelage respectivement.

Nous pouvons également traduire de l'anglais américain vers l'anglais britannique de la même manière. Par exemple, le mot couleur devient couleur.

$ grep 'peal\([a-z]*\)\(\.*[[:space:]]\)' input.txt

10. Recherche d'utilisateurs dans le fichier /etc/passwd

grep peut être utilisé pour obtenir des utilisateurs à partir du fichier /etc/passwd/. Le fichier /etc/passwd maintient la liste des utilisateurs sur le système avec quelques informations supplémentaires.

$ grep "Adam" /etc/passwd 

La commande utilise grep sur un fichier système. Lorsque le mot "Adam" est trouvé, nous pouvons voir la ligne en sortie. Nous pouvons effectuer la même recherche pour tout autre élément du fichier.

Conclusion

Regex avec la commande grep peut être très puissant. Regex est étudié comme un domaine distinct en informatique et peut être utilisé pour faire correspondre des modèles très complexes. En savoir plus sur les regex ici.


Linux
  1. Comment utiliser la commande Linux Hexdump avec des exemples pratiques

  2. Tutoriel Awk :Comprendre les variables Awk avec 3 exemples pratiques

  3. Expressions régulières avancées dans la commande Grep avec 10 exemples - Partie II

  4. Expressions régulières dans la commande Grep avec 10 exemples - Partie I

  5. Commande d'écho avec des exemples pratiques

Utilisation de la commande GREP sous Linux avec des exemples

Bash For Loop avec des exemples pratiques

La commande Wait sous Linux expliquée avec des exemples pratiques

Commande Grep sous Linux (avec exemples)

La commande Linux lsof expliquée avec 12 exemples pratiques

15 exemples pratiques de commande Grep sous Linux / UNIX