Recherche de site Web

Apprenez à utiliser les variables intégrées d'Awk - Partie 10


Au fur et à mesure que nous découvrons la section des fonctionnalités Awk, dans cette partie de la série, nous aborderons le concept de variables intégrées dans Awk. Il existe deux types de variables que vous pouvez utiliser dans Awk, à savoir : Variables définies par l'utilisateur, que nous avons abordées dans la partie 8 et variables intégrées.

Les variables intégrées ont des valeurs déjà définies dans Awk, mais nous pouvons également modifier soigneusement ces valeurs, les variables intégrées incluent :

  1. FILENAME : nom du fichier d'entrée actuel (ne pas modifier le nom de la variable)
  2. FR : numéro de la ligne d'entrée courante (c'est-à-dire la ligne d'entrée 1, 2, 3… ainsi de suite, ne changez pas le nom de la variable)
  3. NF : nombre de champs dans la ligne de saisie courante (ne pas changer le nom de la variable)
  4. OFS : séparateur de champ de sortie
  5. FS : séparateur de champ de saisie
  6. ORS : séparateur d'enregistrement de sortie
  7. RS : séparateur d'enregistrement d'entrée

Commençons par illustrer l'utilisation de certaines des variables intégrées d'Awk ci-dessus :

Pour lire le nom de fichier du fichier d'entrée actuel, vous pouvez utiliser la variable intégrée FILENAME comme suit :

awk ' { print FILENAME } ' ~/domains.txt 

Vous vous rendrez compte que le nom du fichier est imprimé pour chaque ligne d'entrée, c'est le comportement par défaut de Awk lorsque vous utilisez la variable intégrée FILENAME.

En utilisant NR pour compter le nombre de lignes (enregistrements) dans un fichier d'entrée, rappelez-vous qu'il compte également les lignes vides, comme nous le verrons dans l'exemple ci-dessous.

Lorsque nous visualisons le fichier domains.txt à l'aide de la commande cat, il contient 14 lignes avec du texte et 2 lignes vides :

cat ~/domains.txt

awk ' END { print "Number of records in file is: ", NR } ' ~/domains.txt 

Pour compter le nombre de champs dans un enregistrement ou une ligne, nous utilisons la variable intégrée NR comme suit :

cat ~/names.txt

awk '{ print "Record:",NR,"has",NF,"fields" ; }' ~/names.txt

Ensuite, vous pouvez également spécifier un séparateur de champ de saisie à l'aide de la variable intégrée FS, il définit comment Awk divise les lignes de saisie en champs.

La valeur par défaut de FS est espace et tabulation, mais nous pouvons changer la valeur de FS en n'importe quel caractère qui demandera à Awk de diviser les lignes d'entrée en conséquence.

Il existe deux méthodes pour ce faire :

  1. une méthode consiste à utiliser la variable intégrée FS
  2. et la seconde consiste à invoquer l'option -F Awk

Considérons le fichier /etc/passwd sur un système Linux, les champs de ce fichier sont divisés à l'aide du caractère :, nous pouvons donc le spécifier comme nouveau séparateur de champ de saisie lorsque nous souhaitons filtrer certains champs comme dans les exemples suivants :

Nous pouvons utiliser l'option -F comme suit :

awk -F':' '{ print $1, $4 ;}' /etc/passwd

En option, nous pouvons également profiter de la variable intégrée FS comme ci-dessous :

awk ' BEGIN {  FS=“:” ; }  { print $1, $4  ; } ' /etc/passwd

Pour spécifier un séparateur de champ de sortie, utilisez la variable intégrée OFS, elle définit comment les champs de sortie seront séparés en utilisant le caractère que nous utilisons comme dans l'exemple ci-dessous :

awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd

Dans cette Partie 10, nous avons exploré l'idée d'utiliser des variables intégrées Awk fournies avec des valeurs prédéfinies. Mais nous pouvons également modifier ces valeurs, même si cela n'est pas recommandé à moins que vous sachiez ce que vous faites, avec une compréhension adéquate.

Après cela, nous verrons comment utiliser les variables shell dans les opérations de commande Awk. Par conséquent, restez connecté à Tecmint.