La commande awk effectue une correspondance de modèle sur les fichiers. Il est basé sur le langage de programmation AWK. Le mot-clé awk est suivi du modèle, de l'action à effectuer et du nom du fichier. L'action à effectuer est donnée entre accolades. Le modèle et l'action à effectuer doivent être spécifiés entre guillemets simples. Si le modèle n'est pas spécifié, l'action est effectuée sur toutes les données d'entrée ; cependant, si l'action n'est pas spécifiée, la ligne entière est imprimée. La commande awk peut être exécutée à partir de la ligne de commande ou à partir d'un fichier de script awk.
La commande awk peut être utilisée pour traiter des fichiers texte de différentes manières, telles que l'extraction de texte correspondant à un certain modèle; supprimer le texte correspondant à un certain modèle ; ajouter du texte correspondant à un certain modèle ; et bien plus encore.
Syntaxe
La syntaxe de la commande awk est :
# awk [options] ['patterns {actions}'] {file names}
Si vous rencontrez l'erreur ci-dessous lors de l'exécution de la commande awk :
vous pouvez essayer d'installer le package ci-dessous selon votre choix de distribution :
Répartition du système d'exploitation | Commande |
---|---|
OS X | brew install awk |
Debian | apt-get install gawk |
Ubuntu | apt-get install gawk |
Alpin | apk ajouter gawk |
Arch Linux | pacman -S gawk |
Kali Linux | apt-get install gawk |
CentOS | yum install gawk |
Fédora | gawk d'installation dnf |
Raspbian | apt-get install gawk |
Exemples de commandes awk
1. Imprimez la cinquième colonne (champ alias) dans un fichier séparé par des espaces :
# awk '{print $5}' filename
2. Imprimez la deuxième colonne des lignes contenant "foo" dans un fichier séparé par des espaces :
# awk '/foo/ {print $2}' filename
3. Imprimez la dernière colonne de chaque ligne d'un fichier, en utilisant une virgule (au lieu d'un espace) comme séparateur de champ :
# awk -F ',' '{print $NF}' filename
4. Additionnez les valeurs dans la première colonne d'un fichier et imprimez le total :
# awk '{s+=$1} END {print s}' filename
5. Imprimez toutes les trois lignes à partir de la première ligne :
# awk 'NR%3==1' filename
6. Imprimez différentes valeurs en fonction des conditions :
# awk '{if ($1 == "foo") print "Exact match foo"; else if ($1 ~ "bar") print "Partial match bar"; else print "Baz"}' filename
7. Imprimez toutes les lignes où la valeur de la 10e colonne est égale à la valeur spécifiée :
# awk '($10 == value)'
8. Imprimez toutes les lignes dont la valeur de la 10ème colonne est comprise entre un min et un max :
# awk '($10 >= min_value && $10 <= max_value)'