AWK - Expressions régulières

AWK est très puissant et efficace dans la gestion des expressions régulières. Un certain nombre de tâches complexes peuvent être résolues avec de simples expressions régulières. Tout expert en ligne de commande connaît la puissance des expressions régulières.

Ce chapitre couvre les expressions régulières standard avec des exemples appropriés.

Point

Il correspond à n'importe quel caractère unique sauf le caractère de fin de ligne. Par exemple, l'exemple suivant correspond àfin, fun, fan etc.

Exemple

[jerry]$ echo -e "cat\nbat\nfun\nfin\nfan" | awk '/f.n/'

En exécutant le code ci-dessus, vous obtenez le résultat suivant -

Production

fun
fin
fan

Début de ligne

Il correspond au début de la ligne. Par exemple, l'exemple suivant imprime toutes les lignes commençant par motifThe.

Exemple

[jerry]$ echo -e "This\nThat\nThere\nTheir\nthese" | awk '/^The/'

En exécutant ce code, vous obtenez le résultat suivant -

Production

There
Their

Fin de ligne

Cela correspond à la fin de la ligne. Par exemple, l'exemple suivant imprime les lignes qui se terminent par la lettren.

Exemple

[jerry]$ echo -e "knife\nknow\nfun\nfin\nfan\nnine" | awk '/n$/'

Production

En exécutant ce code, vous obtenez le résultat suivant -

fun
fin
fan

Match jeu de caractères

Il est utilisé pour faire correspondre un seul caractère sur plusieurs. Par exemple, l'exemple suivant correspond au modèleCall et Tall mais non Ball.

Exemple

[jerry]$ echo -e "Call\nTall\nBall" | awk '/[CT]all/'

Production

En exécutant ce code, vous obtenez le résultat suivant -

Call
Tall

Ensemble exclusif

Dans l'ensemble exclusif, le carat annule l'ensemble de caractères entre crochets. Par exemple, l'exemple suivant imprime uniquementBall.

Exemple

[jerry]$ echo -e "Call\nTall\nBall" | awk '/[^CT]all/'

En exécutant ce code, vous obtenez le résultat suivant -

Production

Ball

Altération

Une barre verticale permet aux expressions régulières d'être logiquement OU. Par exemple, l'exemple suivant imprimeBall et Call.

Exemple

[jerry]$ echo -e "Call\nTall\nBall\nSmall\nShall" | awk '/Call|Ball/'

En exécutant ce code, vous obtenez le résultat suivant -

Production

Call
Ball

Zéro ou une occurrence

Il correspond à zéro ou à une occurrence du caractère précédent. Par exemple, l'exemple suivant correspond àColour aussi bien que Color. Nous avons faitu comme caractère facultatif en utilisant ?.

Exemple

[jerry]$ echo -e "Colour\nColor" | awk '/Colou?r/'

En exécutant ce code, vous obtenez le résultat suivant -

Production

Colour
Color

Zéro occurrence ou plus

Il correspond à zéro ou plusieurs occurrences du caractère précédent. Par exemple, l'exemple suivant correspond àca, cat, catt, etc.

Exemple

[jerry]$ echo -e "ca\ncat\ncatt" | awk '/cat*/'

En exécutant ce code, vous obtenez le résultat suivant -

Production

ca
cat
catt

Une ou plusieurs occurrences

Il correspond à une ou plusieurs occurrences du caractère précédent. Par exemple, l'exemple ci-dessous correspond à une ou plusieurs occurrences du2.

Exemple

[jerry]$ echo -e "111\n22\n123\n234\n456\n222"  | awk '/2+/'

En exécutant le code ci-dessus, vous obtenez le résultat suivant -

Production

22
123
234
222

Regroupement

Parentheses ()sont utilisés pour le regroupement et le caractère | est utilisé pour les alternatives. Par exemple, l'expression régulière suivante correspond aux lignes contenant soitApple Juice or Apple Cake.

Exemple

[jerry]$ echo -e "Apple Juice\nApple Pie\nApple Tart\nApple Cake" | awk 
   '/Apple (Juice|Cake)/'

En exécutant ce code, vous obtenez le résultat suivant -

Production

Apple Juice
Apple Cake