Awk: apprentissage du script Shell à l'aide de la commande de terminal awk

Awk: apprentissage du script Shell à l'aide de la commande de terminal awk

Awk: apprentissage du script Shell à l'aide de la commande de terminal awk

La commande "awk" dans les systèmes d'exploitation libres de type GNU / Linux est une commande très puissante, qui nous aide à avoir un meilleur contrôle lors du traitement des données provenant d'autres commandes ou commandes de commande. Le nom AWK dérive des initiales des noms de famille de ses auteurs: Alfred Aho, peter Weinberger et Brian KErnighan.

Cette commande fournit un langage de script pour le traitement de texte avec lequel nous pouvons: Définir des variables, utiliser des chaînes et des opérateurs arithmétiques, utiliser le contrôle de flux et des cycles, et générer des rapports formatés. En fait, Awk est plus qu'une simple commande de traitement de motifs, c'est tout un langage d'analyse sémantique.

Introduction à la commande "awk"

AWK a été l'un des premiers utilitaires de console très populaires à gérer (gérer / extraire) les données en maximisant les fonctionnalités des canaux UNIX. Le langage fourni par cet utilitaire est actuellement un standard dans presque tous les systèmes d'exploitation modernes de type UNIX, à tel point qu'il fait partie des spécifications UNIX de base, c'est pourquoi il est généralement déjà installé dans la plupart d'entre eux par défaut.

Sa syntaxe la plus courante est: awk 'program' files et où 'program' peut être: pattern {action} pattern {action}. La commande lit l'entrée de fichier une ligne à la fois. Chaque ligne est comparée à chaque modèle dans l'ordre; pour chaque motif qui correspond à la ligne, l'action correspondante est exécutée.

Un exemple simple comme:

awk -F: '$1=="root" {print}' /etc/passwd

il demande le premier champ s'il s'agit de la racine de chaque ligne dans / etc / passwd et l'affiche en considérant le ":" avec -F: comme séparateur de champ.

Exemple d'introduction Awk

Exemples pratiques

Liste des commandes les plus utilisées

Consultez une liste basée sur l'historique du terminal système, du plus fréquemment utilisé au moins.

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

exemple:

Exemple 1: commande Awk

Graphique (tableau) avec le nombre de connexions pour chaque hôte

Créez un graphique textuel ASCII qui montre le nombre total de connexions de l'hôte à chaque adresse IP.

netstat -an | grep ESTABLISHED | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | awk '{ printf("%s\t%s\t",$2,$1) ; for (i = 0; i < $1; i++) {printf("*")}; print "" }'

exemple:

Exemple 2: commande Awk

Liste des répertoires par taille

Imprimer à l'écran la liste des répertoires du chemin courant du plus grand au plus petit en affichant les étiquettes correspondant à leur taille à l'aide des lettres: g, m et k.

du --max-depth=1 | sort -r -n | awk '{split("k m g",v); s=1; while($1>1024){$1/=1024; s++} print int($1)" "v[s]"\t"$2}'

exemple:

Exemple 3: commande Awk

Afficher le trafic d'une interface réseau

Affichez en ligne la consommation de données entrantes et sortantes en kilo-octets (Ko) pour une interface réseau spécifiée.

while [ /bin/true ]; do OLD=$NEW; NEW=`cat /proc/net/dev | grep eth0 | tr -s ' ' | cut -d' ' -f "3 11"`; echo $NEW $OLD | awk '{printf("\rin: % 9.2g\t\tout: % 9.2g", ($1-$3)/1024, ($2-$4)/1024)}'; sleep 1; done

exemple:

Obtenir une série de numéros de fibonacci

Créez une liste de nombres de quantité X suivant un modèle de fibonacci avec 2 nombres de base à construire.

seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'

exemple:

Exemple 5: commande Awk

Liste graphique de la structure des fichiers par taille

Obtenez une liste de tous les dossiers à la racine du système d'exploitation avec le graphique (barres) et la représentation numérique en pourcentage de leur taille.

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');sudo du / --max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++){printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

exemple:

Exemple 6: commande Awk

Répertorier un résumé des types de fichiers dans un répertoire

Afficher une liste des types de fichiers contenus dans un répertoire avec le nombre de fichiers qui y correspondent.

find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g

exemple:

Exemple 8: commande Awk

Ces exemples de lignes de commande utilisant la commande awk, j'espère que vous le trouverez très utile. Et ils servent à être utilisés directement depuis la console ou indirectement en les insérant dans un script (tâche automatisée).

Dans le prochain article sur les scripts Shell, nous explorerons d'autres commandes.

Si vous voulez en savoir un peu plus sur la commande "grep", visitez ce lien "DEBIAN Wiki"Et si vous souhaitez en savoir plus sur les scripts Shell dans notre propre blog, vous pouvez consulter nos autres publications sur le sujet, en cliquant ici: Script dans FromLinux