Apprenez à utiliser les variables awk, les expressions numériques et les opérateurs d'affectation - Partie 8

Apprenez à utiliser les variables awk, les expressions numériques et les opérateurs d'affectation - Partie 8

La série de commandes AWK devient excitante, je crois Awk que vous devez maîtriser pour vous permettre d'effectuer un filtrage de texte ou de chaîne de base dans Linux.

En commençant par cette partie, nous plongerons dans les zones avancées de Awk Pour gérer des opérations de filtrage de texte ou de chaîne plus complexes. Par conséquent, nous allons couvrir Awk Caractéristiques telles que les variables, les expressions numériques et les opérateurs d'affectation.

Apprenez les variables awk, les expressions numériques et les opérateurs d'affectation

Ces concepts ne sont pas complètement distincts de ceux que vous avez probablement rencontrés dans de nombreux langages de programmation avant ce shell, C, Python et beaucoup d'autres, donc il n'est pas nécessaire de s'inquiéter beaucoup de ce sujet, nous révisons simplement les idées communes d'utilisation Ces fonctionnalités mentionnées.

Ce sera probablement l'un des plus faciles Awk Commandez des sections pour comprendre, alors asseyez-vous et permets de commencer.

1. Variables awk

Dans n'importe quel langage de programmation, une variable est un porte-lieux qui stocke une valeur, lorsque vous créez une variable dans un fichier de programme, à 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 Awk Variables de la même manière que vous définissez les variables de coquille comme suit:

variable_name = valeur 

Dans la syntaxe ci-dessus:

  1. Nom de variable: le nom que vous donnez une variable
  2. valeur: la valeur stockée dans la variable

Regardons quelques exemples ci-dessous:

Computer_Name = ”Tecmint.com ”port_no =” 22 ”e-mail =” [e-mail protégé] »server =” Computer_name » 

Jetez un œil aux exemples simples ci-dessus, dans la première définition variable, la valeur Tecmint.com est affecté à la variable Nom de l'ordinateur.

De plus, la valeur 22 est affecté à 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 Nom de l'ordinateur au serveur variable.

Si vous vous souvenez, à partir de la partie 2 de cette série AWK, nous avons couvert l'édition de champ, nous avons expliqué comment Awk divise les lignes d'entrée en champs et utilise l'opérateur d'accès au champ 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 prénom est défini sur le deuxième champ et nom de famille est défini sur le troisième champ.

Comme illustration, considérez un fichier nommé des noms.SMS qui contient une liste des utilisateurs d'une application indiquant leurs prénoms et leurs noms de famille plus le sexe. En utilisant la commande CAT, nous pouvons afficher le contenu du fichier comme suit:

$ noms de chat.SMS 
Liste du contenu du fichier à l'aide de la commande CAT

Ensuite, nous pouvons également utiliser les variables prénom et nom de famille Pour stocker les premier et deuxième noms du premier utilisateur de la liste comme en exécutant le Awk Commande ci-dessous:

$ awk '/ aaron / first_name = $ 2; second_name = 3 $; print first_name, second_name; ' des noms.SMS 
Stocker les variables à l'aide de la commande awk

Laissez également jeter un œil à un autre cas, lorsque vous émettez la commande uname -a Sur votre terminal, il imprime toutes les informations de votre système.

Le deuxième champ contient votre nom d'hôte, Par conséquent, nous pouvons stocker le nom d'hôte Dans une variable appelée nom d'hôte et l'imprimez en utilisant Awk comme suit:

$ uname -a $ uname -a | awk 'hostname = $ 2; imprimer le nom d'hôte;  ' 
Stocker la sortie de la commande à la variable à l'aide de awk

2. Expressions numériques

Dans Awk, Les expressions numériques sont construites en utilisant les opérateurs numériques suivants:

  1. * : opérateur de multiplication
  2. + : opérateur d'addition
  3. / / : opérateur de division
  4. - : opérateur de soustraction
  5. % : opérateur de module
  6. ^ : opérateur d'exponentiation

La syntaxe pour une expressions numériques est:

$ opérand1 opérateur opérand2 

Dans la forme ci-dessus, opérande1 et opérande2 peut être des nombres ou des noms de variables, et opérateur est l'un des opérateurs ci-dessus.

Voici quelques exemples pour montrer comment construire des expressions numériques:

compteur = 0 num1 = 5 num2 = 10 num3 = num2-num1 compteur = compteur + 1 

Pour comprendre l'utilisation d'expressions numériques dans Awk, Nous considérerons l'exemple suivant ci-dessous, avec le fichier domaines.SMS qui contient tous les domaines appartenant à Tecmint.

nouvelles.Tecmint.com Tecmint.com Linuxsay.com Windows.Tecmint.com Tecmint.comtés com.Tecmint.com Tecmint.com Linuxsay.com Tecmint.comtés com.Tecmint.com Tecmint.com Linuxsay.com Windows.Tecmint.com Tecmint.com 

Pour afficher le contenu du fichier, utilisez la commande ci-dessous:

$ Domains Cat.SMS 
Afficher le contenu du fichier

Si nous voulons compter le nombre de fois le domaine Tecmint.com apparaît dans le fichier, nous pouvons écrire un script simple pour le faire comme suit:

#!/ bin / bash pour le fichier dans [e-mail protégé]; faire si [-f $ file]; Ensuite, #print le nom de fichier écho "le fichier est: $ fichier" #print un nombre progressivement pour chaque ligne contenant Tecmint.com awk '/ ^ tecmint.com / compter = compteur + 1; printf "% s \ n", compteur;  '$ Fichier Else #print Informations d'erreur INTO ENCISE ENCORE n'est pas un fichier ECHO "Le fichier $ n'est pas un fichier, veuillez spécifier un fichier."> & 2 && exit 1 fi a fait le script #terminate avec le code de sortie 0 en cas d'exécution réussie Exit 0 
Script shell pour compter une chaîne ou un texte dans le fichier

Après avoir créé le script, enregistrez-le et le rendez exécutable, lorsque nous l'exécutons avec le fichier, domaines.SMS Comme entrée hors de l'entrée, nous obtenons la sortie suivante:

$ ./scénario.sh ~ / domaines.SMS 
Script pour compter la chaîne ou le texte

De la sortie du script, il y a 6 lignes dans le fichier domaines.SMS qui contiennent Tecmint.com, pour confirmer que vous pouvez les compter manuellement.

3. Opérateurs d'affectation

Le dernier Awk Caractéristique que nous couvrirons est les opérateurs d'affectation, il y a plusieurs opérateurs d'affectation dans AWK et il s'agit des éléments suivants:

  1. * = : opérateur d'affectation de multiplication
  2. += : opérateur d'affectation supplémentaire
  3. / = : opérateur d'affectation de division
  4. -= : opérateur d'affectation de soustraction
  5. % = : opérateur d'affectation de module
  6. ^ = : opérateur d'affectation d'exponentiation

La syntaxe la plus simple d'une opération d'affectation dans Awk est comme suit:

$ variable_name = variable_name opérateur opératrice 

Exemples:

compteur = 0 compteur = compteur + 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 la mission sous la forme suivante:

variable_name operator = operand 
compteur = 0 compteur + = 1 num = 20 num- = 1 

Par conséquent, nous pouvons modifier le Awk Commande dans le script shell que nous venons d'écrire ci-dessus en utilisant += opérateur d'affectation comme suit:

#!/ bin / bash pour le fichier dans [e-mail protégé]; faire si [-f $ file]; Ensuite, #print le nom de fichier écho "le fichier est: $ fichier" #print un nombre progressivement pour chaque ligne contenant Tecmint.com awk '/ ^ tecmint.com / compteur + = 1; printf "% s \ n", compteur;  '$ Fichier Else #print Informations d'erreur INTO ENCISE ENCORE n'est pas un fichier ECHO "Le fichier $ n'est pas un fichier, veuillez spécifier un fichier."> & 2 && exit 1 fi a fait le script #terminate avec le code de sortie 0 en cas d'exécution réussie Exit 0 
ALTER SCRIPT SHELL

Dans ce segment de la série AWK, nous avons couvert des puissants Awk Caractéristiques, c'est-à-dire des variables, construisant des expressions numériques et utilisant des 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 celui des autres langages de programmation, mais il peut y avoir des distinctions importantes sous la programmation AWK.

Dans partie 9, Nous regarderons plus Awk Caractéristiques qui sont des modèles spéciaux: COMMENCER et FIN. Jusque-là, restez connecté à Tecmint.