Awk est un langage puissant pour manipuler et traiter des fichiers texte. Il est particulièrement utile lorsque les lignes d'un fichier texte sont dans un format d'enregistrement. c'est-à-dire un enregistrement contenant plusieurs champs séparés par un délimiteur. Même lorsque le fichier d'entrée n'est pas dans un format d'enregistrement, vous pouvez toujours utiliser awk pour effectuer un traitement de base des fichiers et des données. Vous pouvez également écrire une logique de programmation à l'aide d'awk même lorsqu'il n'y a pas de fichiers d'entrée à traiter.
En bref, AWK est un langage puissant, qui peut s'avérer utile pour effectuer les tâches de routine quotidiennes.
Si vous débutez avec awk, commencez par lire ce tutoriel d'introduction à Awk qui fait partie de la série de tutoriels Awk.
La courbe d'apprentissage sur AWK est beaucoup plus petite que la courbe d'apprentissage sur n'importe quelle autre langue. Si vous connaissez déjà le programme C, vous apprécierez à quel point il est simple et facile d'apprendre AWK.
AWK a été initialement écrit par trois développeurs - A. Aho, B. W. Kernighan et P. Weinberger. Ainsi, le nom AWK vient des initiales de ces trois développeurs.
Voici les trois variantes d'AWK :
1. Awk
AWK est l'AWK original écrit par A. Aho, B. W. Kernighan et P. Weinberger.
2. Nawk
NAWK signifie "Nouveau AWK". Il s'agit de la version AT&T de l'Awk.
3. Gawk
GAWK signifie "GNU AWK". Toutes les distributions Linux sont livrées avec GAWK. Ceci est entièrement compatible avec AWK et NAWK.
Sous Linux, taper awk ou gawk invoque le GAWK. awk est lié à gawk comme indiqué ci-dessous sur les systèmes Linux.
# ls -l /bin/awk /usr/bin/awk lrwxrwxrwx 1 root root 4 Jan 5 23:13 /bin/awk -> gawk lrwxrwxrwx 1 root root 14 Jan 5 23:13 /usr/bin/awk -> ../../bin/gawk
Le tableau suivant résume les différentes fonctionnalités disponibles dans ces versions. Comme vous le voyez ci-dessous, gawk est le sur-ensemble qui contient toutes les fonctionnalités de awk et nawk d'origine.
Awk contre Nawk contre Gawk
Téléchargez les différences Awk Vs Nawk Vs Gawk au format PDF.
Les variables intégrées de base suivantes FS, OFS, RS, ORS, NR, NF et FILENAME sont disponibles dans toutes les versions d'awk.
Fonctionnalité | Description | AWK | NAWK | GAWK |
---|---|---|---|---|
FS | Séparateur de champ de saisie | Oui | Oui | Oui |
OFS | Séparateur de champ de sortie | Oui | Oui | Oui |
RS | Séparateur d'enregistrements | Oui | Oui | Oui |
ORS | Séparateur d'enregistrement de sortie | Oui | Oui | Oui |
NR | Numéro de l'enregistrement | Oui | Oui | Oui |
NF | Nombre de champs dans un enregistrement | Oui | Oui | Oui |
FILENAME | Contient le fichier d'entrée actuel en cours de traitement | Oui | Oui | Oui |
Toutes les fonctionnalités suivantes ne sont pas disponibles dans l'awk d'origine. Ils sont disponibles en nawk et/ou gawk comme indiqué ci-dessous.
Fonctionnalité | Description | NAWK | GAWK |
---|---|---|---|
FNR | Fichier "Numéro de l'enregistrement" | Oui | Oui |
ARGC | Nombre total d'arguments passés au script awk | Oui | Oui |
ARGV | Tableau contenant tous les arguments du script awk | Oui | Oui |
ARGIND | Index vers ARGV pour récupérer le nom de fichier actuel | Oui | |
SUBSEP | Séparateur d'indice pour les index de tableau | Oui | Oui |
RSTART | La fonction de correspondance définit RSTART avec l'emplacement de départ de str1 dans str2 | Oui | Oui |
LONGUEUR | La fonction de correspondance définit RLENGTH avec la longueur de str1 | Oui | Oui |
OFMT | Awk utilise ceci pour décider comment imprimer les valeurs. La valeur par défaut est "%.6g" | Oui | Oui |
ENVIRONNEMENT | Tableau contenant toutes les variables et valeurs d'environnement | Oui | |
IGNORECASE | La valeur par défaut est 0. Lorsqu'elle est définie sur 1, elle est insensible à la casse pour les comparaisons de chaînes et d'expressions régulières. | Oui | |
ERRNO | Contient le message d'erreur d'une opération d'E/S. par exemple. lors de l'utilisation de la fonction getline. | Oui | |
BINMODE n | Définir le mode binaire pour les E/S. n peut valoir 1 (fichiers d'entrée), 2 (fichiers de sortie) ou 3 (tous les fichiers) | Oui | |
CONVFMT | Le format utilisé lors de la conversion du nombre en chaîne. | Oui | |
FIELDWIDTHS n | n est un nombre délimité par des espaces qui indique les largeurs de colonne. S'il est disponible, gawk l'utilise à la place de FS. | Oui | |
LINT n | n peut être un nombre. Lorsque n est un nombre différent de zéro (indiquant vrai), gawk affichera des messages lint fatals, invalides ou d'avertissement (identique à la ligne de commande –lint) | Oui | |
TEXTDOMAIN | Ceci est utilisé pour l'internationalisation. | Oui | |
sub(str1,str2,var) | Dans la chaîne d'entrée (var), str1 est remplacé par str2 et la sortie est stockée dans var | Oui | Oui |
gsub(str1,str2,var) | Identique à sub, mais global. Il effectue plusieurs substitutions sur la même chaîne d'entrée (var). | Oui | Oui |
match(str1,str2) | Renvoie un nombre positif lorsque str1 est présent dans str2. | Oui | Oui |
getline Lire la ligne suivante d'un autre fichier d'entrée. Définit $0, NF | Oui | Oui | |
getline var Lire la ligne suivante d'un autre fichier d'entrée et la stocker dans la variable (var) | Oui | Oui | |
toupper(str) | Convertit str en majuscule | Oui | |
tolow(str) | Convertit str en minuscules | Oui | |
|& | Communication bidirectionnelle entre la commande awk et le processus externe | Oui | |
tempssys() | Heure actuelle en temps d'époque. Combinez avec strftime. par exemple. print strftime(“%c”,systime()) | Oui |