awk
Patterns et Actions
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