Utilisation des variables, expressions et opérateurs Awk
La série de commandes Awk devient passionnante ! Je crois que, dans les sept parties précédentes, nous avons passé en revue certains principes fondamentaux d’Awk que vous devez maîtriser pour vous permettre d’effectuer un filtrage de texte ou de chaîne de base sous Linux.
À partir de cette partie, nous allons nous plonger dans les zones avancées d’Awk pour gérer des opérations de filtrage de texte ou de chaîne plus complexes. Par conséquent, nous couvrirons les fonctionnalités d’Awk telles que les variables, les expressions numériques et les opérateurs d’affectation.
Ces concepts ne sont pas significativement différents de ceux que vous avez peut-être rencontrés dans de nombreux langages de programmation auparavant, tels que Shell, C, Python et bien d’autres. Il n’y a donc pas lieu de s’inquiéter beaucoup de ce sujet ; Nous révisons simplement les idées courantes d’utilisation de ces fonctionnalités.
Ce sera probablement l’une des sections de commande Awk les plus faciles à comprendre, alors asseyez-vous et allons-y
1. Variables Awk
Dans n’importe quel langage de programmation, une variable est un espace réservé qui stocke une valeur. Lorsque vous créez une variable dans un fichier programme, au fur et à mesure que le fichier est exécuté, un espace est créé en mémoire qui stockera la valeur que vous spécifiez pour la variable.
Vous pouvez définir les variables Awk de la même manière que vous définissez les variables shell comme suit :
variable_name=value
Dans la syntaxe ci-dessus :
variable_name: est le nom que vous donnez à une variable.value: valeur stockée dans la variable.
Regardons quelques exemples ci-dessous :
computer_name=”linux-console.net”
port_no=”22”
email=”[email ”
server=”computer_name”
Jetez un coup d’œil aux exemples simples ci-dessus, dans la première définition de variable, la valeur linux-console.net est attribuée à la variable computer_name.
De plus, la valeur 22 est attribuée à la variable port_no, il est également possible d’attribuer la valeur d’une variable à une autre variable comme dans le dernier exemple où nous avons attribué la valeur de computer_name au serveur de variables.
Si vous vous souvenez, dès la partie 2 de cette série Awk, où nous avons couvert l’édition de champs, nous avons parlé de la façon dont Awk divise les lignes de saisie en champs et utilise un opérateur d’accès aux champs standard, $ pour lire les différents champs qui ont été analysés. Nous pouvons également utiliser des variables pour stocker les valeurs des champs comme suit.
first_name=$2
second_name=$3
Dans les exemples ci-dessus, la valeur de first_name est définie sur la deuxième zone et second_name est définie sur la troisième zone.
À titre d’illustration, considérons un fichier nommé names.txt qui contient une liste d’utilisateurs indiquant leur prénom et leur nom ainsi que leur sexe.
À l’aide de la commande cat, nous pouvons afficher le contenu du fichier comme suit
cat names.txt
Ensuite, nous pouvons également utiliser les variables first_name et second_name pour stocker le prénom et le deuxième nom du premier utilisateur de la liste en exécutant la commande Awk ci-dessous :
awk '/Aaron/{ first_name=$2 ; second_name=$3 ; print first_name, second_name ; }' names.txt
Jetons également un coup d’œil à un autre cas, lorsque vous lancez la commande uname -a sur votre terminal, elle imprime toutes les informations de votre système.
Le deuxième champ contient votre nom d’hôte, nous pouvons donc stocker le nom d’hôte dans une variable appelée nom d’hôte et l’imprimer à l’aide de Awk comme suit :
uname -a
uname -a | awk '{hostname=$2 ; print hostname ; }'
2. Expressions numériques
Dans Awk, les expressions numériques sont construites à l’aide des opérateurs numériques suivants :
*: opérateur de multiplication+: opérateur d’addition/: Opérateur de division-: opérateur de soustraction%: opérateur de module^: opérateur d’exponentiation
La syntaxe d’une expression numérique est la suivante :
operand1 operator operand2
Dans la forme ci-dessus, operand1 et operand2 peuvent être des nombres ou des noms de variables, et operator est l’un des opérateurs ci-dessus.
Vous trouverez ci-dessous quelques exemples pour montrer comment créer des expressions numériques :
counter=0
num1=5
num2=10
num3=num2-num1
counter=counter+1
Pour comprendre l’utilisation des expressions numériques dans Awk, nous considérerons l’exemple suivant ci-dessous, avec le fichier domains.txt qui contient tous les domaines appartenant à Tecmint.
news.linux-console.net
linux-console.net
linuxsay.com
windows.linux-console.net
linux-console.net
news.linux-console.net
linux-console.net
linuxsay.com
linux-console.net
news.linux-console.net
linux-console.net
linuxsay.com
windows.linux-console.net
linux-console.net
Pour afficher le contenu du fichier, utilisez la commande ci-dessous :
cat domains.txt
Si nous voulons compter le nombre de fois que le domaine linux-console.net apparaît dans le fichier, nous pouvons écrire un script simple pour le faire comme suit :
#!/bin/bash
for file in $@; do
if [ -f $file ] ; then
#print out filename
echo "File is: $file"
#print a number incrementally for every line containing linux-console.net
awk '/^linux-console.net/ { counter=counter+1 ; printf "%s\n", counter ; }' $file
else
#print error info incase input is not a file
echo "$file is not a file, please specify a file." >&2 && exit 1
fi
done
#terminate script with exit code 0 in case of successful execution
exit 0
Après avoir créé le script, l’enregistrer et le rendre exécutable, lorsque nous l’exécutons avec le fichier, domains.txt comme entrée, nous obtenons la sortie suivante :
./script.sh ~/domains.txt
À partir de la sortie du script, il y a 6 lignes dans le fichier domains.txt qui contiennent linux-console.net, pour confirmer que vous pouvez les compter manuellement.
3. Opérateurs d’assignation
La dernière fonctionnalité d’Awk que nous aborderons est celle des opérateurs d’affectation, il y a plusieurs opérateurs d’affectation dans Awk et ceux-ci incluent les suivants :
*=: opérateur d’affectation de multiplication+=: opérateur d’affectation d’addition/=: Opérateur d’affectation de division-=: opérateur d’affectation de soustraction%=: opérateur d’assignation de module^=: opérateur d’affectation d’exponentiation
La syntaxe la plus simple d’une opération d’affectation dans Awk est la suivante :
variable_name=variable_name operator operand
Exemples:
counter=0
counter=counter+1
num=20
num=num-1
Vous pouvez utiliser les opérateurs d’affectation ci-dessus pour raccourcir les opérations d’affectation dans Awk, considérez les exemples précédents, nous pourrions effectuer l’affectation sous la forme suivante :
variable_name operator=operand
counter=0
counter+=1
num=20
num-=1
Par conséquent, nous pouvons modifier la commande Awk dans le script shell que nous venons d’écrire ci-dessus en utilisant l’opérateur d’affectation += comme suit :
#!/bin/bash
for file in $@; do
if [ -f $file ] ; then
#print out filename
echo "File is: $file"
#print a number incrementally for every line containing linux-console.net
awk '/^linux-console.net/ { counter+=1 ; printf "%s\n", counter ; }' $file
else
#print error info incase input is not a file
echo "$file is not a file, please specify a file." >&2 && exit 1
fi
done
#terminate script with exit code 0 in case of successful execution
exit 0
Dans ce segment de la série de commandes Awk, nous avons couvert certaines fonctionnalités puissantes d’Awk, à savoir les variables, la construction d’expressions numériques et l’utilisation d’opérateurs d’affectation, ainsi que quelques illustrations de la façon dont nous pouvons réellement les utiliser.
Ces concepts ne sont pas différents de ceux d’autres langages de programmation, mais il peut y avoir des distinctions significatives dans le cadre de la programmation Awk.
Dans la partie 9, nous examinerons d’autres fonctionnalités d’Awk qui sont des modèles spéciaux : BEGIN et END. D’ici là, restez connecté à Tecmint.
Pour ceux qui recherchent une ressource complète, nous avons compilé tous les articles de la série Awk dans un livre, qui comprend 13 chapitres et s’étend sur 41 pages, couvrant à la fois l’utilisation de base et avancée d’Awk avec des exemples pratiques.
| Nom du produit | Prix | Acheter |
|---|---|---|
| eBook : Présentation du guide de démarrage Awk pour les débutants | 8,99 $ | [Acheter maintenant] |






