Awk

Comment utiliser Regex avec la commande 'awk'

Comment utiliser Regex avec la commande 'awk'

Une expression régulière (regex) est utilisée pour trouver une séquence donnée de caractères dans un fichier. Des symboles tels que des lettres, des chiffres et des caractères spéciaux peuvent être utilisés pour définir le motif. Diverses tâches peuvent être facilement effectuées en utilisant des modèles regex. Dans ce tutoriel, nous allons vous montrer comment utiliser les modèles regex avec la commande 'awk'.

Les caractères de base utilisés dans les modèles

De nombreux caractères peuvent être utilisés pour définir un modèle regex. Les caractères les plus couramment utilisés pour définir les modèles de regex sont définis ci-dessous.

Personnage La description
. Correspond à n'importe quel caractère sans saut de ligne (\n)
\ Citer un nouveau méta-caractère
^ Faire correspondre le début d'une ligne
$ Faire correspondre la fin d'une ligne
| Définir un remplaçant
() Définir un groupe
[] Définir une classe de caractères
\w Correspond à n'importe quel mot
\s Faites correspondre n'importe quel caractère d'espace blanc
\ré Faire correspondre n'importe quel chiffre
\b Correspond à n'importe quelle limite de mot

Créer un fichier

Pour suivre ce tutoriel, créez un fichier texte nommé des produits.SMS. Le fichier doit contenir quatre champs : ID, Nom, Type et Prix.

ID Nom Type Prix

p1001 15" Moniteur Moniteur 100 $

p1002 A4tech Souris Souris $10

p1003 Imprimante Samsung Imprimante 50 $

Scanner p1004 HP Scanner 60 $

p1005 Souris Logitech Souris 15 $

Exemple 1 : définir un modèle d'expression régulière à l'aide de la classe de caractères

La commande 'awk' suivante recherchera et imprimera les lignes contenant le caractère 'n' suivi des caractères 'er'.

$ produits pour chats.SMS
$ awk '/[n][er]/ print $0' produits.SMS

La sortie suivante sera produite après l'exécution des commandes ci-dessus. La sortie montre la ligne qui correspond au modèle. Ici, une seule ligne correspond au motif.

Exemple 2 : définir un modèle regex à l'aide du symbole '^'

La commande 'awk' suivante recherchera et imprimera les lignes commençant par le caractère 'p' et incluant le chiffre 3.

$ produits pour chats.SMS
$ awk '/^p.*3/ print $0' produits.SMS

La sortie suivante sera produite après l'exécution des commandes ci-dessus. Ici, il y a une ligne qui correspond au motif.

Exemple 3 : définir un modèle regex à l'aide de la fonction gsub

le gsub() la fonction est utilisée pour rechercher et remplacer globalement du texte. La commande 'awk' suivante recherchera le mot 'Scanner' et le remplacera par le mot 'Router' avant d'imprimer le résultat.

$ produits pour chats.SMS
$ awk 'gsub(/Scanner/, "Router")'  produits.SMS

La sortie suivante sera produite après l'exécution des commandes ci-dessus. Il y a une ligne qui contient le mot 'Scanner', et 'Scanner' est remplacé par le mot 'Routeur' avant l'impression de la ligne.

Exemple 4 : définir un modèle regex avec '*'

La commande 'awk' suivante recherchera et imprimera toute chaîne commençant par 'Mo' et incluant tout caractère suivant.

$ produits pour chats.SMS
$ awk '/Mo*/ print $0' produits.SMS

La sortie suivante sera produite après l'exécution des commandes ci-dessus. Trois lignes correspondent au motif : deux lignes contiennent le mot 'Souris' et une ligne contient le mot 'Surveiller'.

Exemple 5 : Définir un modèle d'expression régulière à l'aide du symbole '$'

La commande 'awk' suivante recherchera et imprimera les lignes dans le fichier qui se terminent par le chiffre 5.

$ produits pour chats.SMS
$ awk '/5$/ print $0' produits.SMS

La sortie suivante sera produite après l'exécution des commandes ci-dessus.  Il n'y a qu'une seule ligne dans le fichier qui se termine par le chiffre 5.

Exemple 6 : Définir un modèle de regex en utilisant le '^' et '|' symboles

Le '^Le symbole ' indique le début d'une ligne, et le '|Le symbole ' indique une instruction OU logique. La commande 'awk' suivante recherchera et imprimera les lignes commençant par le caractère 'p' et contiennent soit 'Scanner' ou alors 'Souris'.

$ produits pour chats.SMS
$ awk '/^p.* (Scanner|Souris)/' produits.SMS

La sortie suivante sera produite après l'exécution des commandes ci-dessus. La sortie montre que deux lignes contiennent le mot 'Souris' et une ligne contient le mot 'Scanner'. Les trois lignes commencent par le caractère 'p'.

Exemple 7 : Définir un modèle d'expression régulière à l'aide du symbole '+'

Le '+L'opérateur ' est utilisé pour trouver au moins une correspondance. La commande 'awk' suivante recherchera et imprimera les lignes contenant le caractère 'm' au moins une fois.

$ produits pour chats.SMS
$ awk '/n+/print' produits.SMS

La sortie suivante sera produite après l'exécution des commandes ci-dessus. Ici, le caractère 'm'contient apparaît au moins une fois dans les lignes qui contiennent les mots Moniteur, imprimante et scanner.

Exemple 8 : Définir un modèle d'expression régulière à l'aide de la fonction gsub()

La commande 'awk' suivante recherchera globalement le mot 'Imprimante' et remplacez-le par le mot 'Surveiller' en utilisant le fonction gsub().

$ produits pour chats.SMS
$ awk 'gsub(/Printer/, "Monitor") print$0' produits.SMS

La sortie suivante sera produite après l'exécution des commandes ci-dessus. La quatrième ligne du fichier contient le mot 'Imprimante' deux fois, et dans la sortie, 'Imprimante' a été remplacé par le mot 'Surveiller'.

Conclusion

De nombreux symboles et fonctions peuvent être utilisés pour définir des modèles d'expression régulière pour différentes tâches de recherche et de remplacement. Certains symboles couramment utilisés dans les modèles regex sont appliqués dans ce tutoriel avec la commande 'awk'.

Comment afficher le compteur FPS dans les jeux Linux
Les jeux Linux ont reçu une impulsion majeure lorsque Valve a annoncé la prise en charge de Linux pour le client Steam et leurs jeux en 2012. Depuis l...
Comment télécharger et jouer à Civilization VI de Sid Meier sur Linux
Présentation du jeu Civilization 6 est une version moderne du concept classique introduit dans la série de jeux Age of Empires. L'idée était assez sim...
Comment installer et jouer à Doom sur Linux
Introduction à Doom La série Doom est née dans les années 90 après la sortie du Doom original. Ce fut un succès instantané et à partir de ce moment-là...