GNU/Linux >> Tutoriels Linux >  >> Linux

AWK contre NAWK contre GAWK

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

Linux
  1. Un script gawk pour convertir des guillemets intelligents

  2. Extraire et afficher des données avec awk

  3. Un guide du débutant pour rester bouche bée

  4. Variable externe dans Awk ?

  5. Exemples de commandes awk sous Linux

Commande AWK sous Linux avec des exemples

Commande Awk sous Linux

Commande Linux awk avec 10 exemples

Commande AWK sous Linux/Unix

Flatpak contre Snap contre AppImage

Comment accepter le oui du script Êtes-vous sûr de vouloir continuer à vous connecter (oui/non) ?