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 terminées en utilisant des motifs regex. Dans ce tutoriel, nous vous montrerons comment utiliser les motifs regex avec la commande 'awk'.

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

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

Personnage Description
. Faites correspondre tout personnage sans nouvelle ligne (\ n)
\ Citer un nouveau méta-personnage
^ Faire correspondre le début d'une ligne
$ Faites correspondre la fin d'une ligne
| Définir un alternatif
() Définir un groupe
[] Définir une classe de caractères
\ w Faites correspondre tout mot
\ s Faites correspondre tout personnage d'espace blanc
\d Correspondre à n'importe quel chiffre
\ b Faites correspondre toute 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.

Prix ​​de type de nom d'identité

P1001 15 "Monitor Monitor 100 $

P1002 A4tech Mouse Mouse 10 $

P1003 Imprimante de l'imprimante Samsung 50 $

P1004 HP Scanner Scanner 60 $

P1005 Logitech Mouse Mouse 15 $

Exemple 1: Définissez un motif regex en utilisant la classe de caractères

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

$ Products Cat.SMS
$ awk '/ [n] [er] / imprimer $ 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 modèle.

Exemple 2: Définissez un motif regex en utilisant le symbole '^'

La commande 'awk' suivante recherche et imprimera les lignes qui commencent par le caractère 'P' et incluront le numéro 3.

$ Products Cat.SMS
$ awk '/ ^ p.* 3 / Imprimer des produits de 0 '.SMS

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

Exemple 3: Définissez un motif regex en utilisant la fonction GSUB

Le gsub () La fonction est utilisée pour rechercher et remplacer le texte à l'échelle mondiale. La commande «awk» suivante recherchera le mot «scanner» et le remplacera par le mot «routeur» avant d'imprimer le résultat.

$ Products Cat.SMS
$ awk 'gsub (/ scanner /, "router")' Products.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éfinissez un motif regex avec '*'

La commande 'awk' suivante recherche et imprimera n'importe quelle chaîne qui commence par 'MO' et comprend tout caractère suivant.

$ Products Cat.SMS
$ awk '/ mo * / imprimer $ 0' Produits.SMS

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

Exemple 5: Définissez un modèle regex en utilisant le symbole '$'

La commande 'awk' suivante recherche et imprimera les lignes dans le fichier qui se termine par le numéro 5.

$ Products Cat.SMS
$ awk '/ 5 $ / imprimer $ 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 numéro 5.

Exemple 6: Définissez un motif regex en utilisant les '^' et '|' symboles

Le '^'Le symbole indique le début d'une ligne, et le'|'Le symbole indique une logique ou une déclaration. La commande 'awk' suivante recherche et imprimera les lignes qui commencent par le caractère 'p'Et contiennent soit'Scanner' ou 'Souris'.

$ Products Cat.SMS
$ awk '/ ^ p.* (Scanner | Mouse) / 'Products.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 personnage 'p'.

Exemple 7: Définissez un motif regex en utilisant le symbole '+'

Le '+'L'opérateur est utilisé pour trouver au moins un match. La commande 'awk' suivante recherche et imprimera les lignes qui contiennent le caractère 'n' au moins une fois.

$ Products Cat.SMS
$ awk '/ n + / print' Products.SMS

La sortie suivante sera produite après l'exécution des commandes ci-dessus. Ici, le personnage 'n'contient se produit au moins une fois dans les lignes qui contiennent les mots Moniteur, imprimante et scanner.

Exemple 8: Définissez un motif regex à l'aide de la fonction gsub ()

La commande 'awk' suivante recherche globalement le mot 'Imprimante'et le remplacer par le mot'Moniteur' en utilisant le Fonction GSUB ().

$ Products Cat.SMS
$ awk 'gsub (/ imprimante /, «moniteur») imprimer $ 0' Products.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'Moniteur'.

Conclusion

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