Recherche…


introduction

Un awk compose de motifs et d'actions, entre accolades, à prendre si un motif correspond. Le motif le plus élémentaire est le motif vide, qui correspond à tout enregistrement. L'action la plus élémentaire est l'action vide, qui équivaut à { print } , ce qui équivaut à { print $0 } . Si le motif et l'action sont vides, awk ne fera rien.

Le programme suivant fera simplement écho à son entrée, par exemple:

awk '{ print }' /etc/passwd

Puisque { print } est l'action par défaut et qu'une valeur vraie correspond à un enregistrement, ce programme peut être réécrit comme suit:

awk '1' /etc/passwd

Le type de motif le plus courant est probablement une expression régulière entourée de barres obliques. Le programme suivant imprimera tous les enregistrements contenant au moins deux occurrences ultérieures de la lettre o , par exemple:

awk '/oo+/ { print }' /etc/passwd

Cependant, vous pouvez utiliser des expressions arbitraires comme modèles. Le programme suivant imprime les noms (champ un) des utilisateurs du groupe zéro (champ quatre), par exemple:

awk -F: '$4 == 0 { print $1 }' /etc/passwd

Au lieu de correspondre exactement, vous pouvez également rechercher une expression régulière. Le programme suivant imprime les noms de tous les utilisateurs d'un groupe avec au moins un zéro dans son identifiant de groupe:

awk -F: '$4 ~ /0/ { print $1 }' /etc/passwd

Filtrer les lignes par longueur

Ce motif vous permettra de filtrer les lignes en fonction de leur longueur

$cat file
AAAAA
BBBB
CCCC
DDDD
EEEE

$awk 'length($0) > 4 { print $0 }' file
AAAAA
$

Quoi qu’il en soit, le motif permettra au prochain bloc de code d’être exécuté, puis, comme l’ action par défaut pour AWK imprime la ligne en cours {print} , nous verrons le même résultat lors de l’exécution:

$awk 'length($0) > 4 ' file
AAAAA


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow