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