La commande awk transforme des flux texte en informations structurées pour l’administration système. Sous GNU et distributions comme Debian, Ubuntu ou Fedora, awk reste un outil central.
D’abord conçu par Aho, Weinberger et Kernighan, awk a évolué vers un langage complet et pratique. Avant d’entrer dans les exemples pratiques, examinons les points essentiels à retenir :
A retenir :
- Extraction de champs par position, utile pour logs et rapports système
- Filtrage par motifs et expressions régulières pour fichiers configurés
- Formatage de sortie avec OFS pour rapports lisibles et standardisés
- Automatisation via scripts awk pour tâches répétitives en Shell
Champs et syntaxe de base d’awk pour l’administration Shell
Après ces points essentiels, il faut maîtriser les champs et la syntaxe pour manipuler des fichiers. Par défaut awk sépare les champs par espaces et identifie chaque champ par $ suivi d’un nombre. Ainsi $1 représente le premier champ et $NF le dernier, très utile pour rapports.
Selon la GNU Awk Manual, les règles awk combinent modèles et actions pour définir le traitement. Cette logique simple explique la puissance d’awk pour des tâches de rapport et de filtrage. Ce point conduit à l’usage des séparateurs et des règles BEGIN et END que nous verrons ensuite.
Exemples de commandes :
- who | awk ‘{print $1}’ — extraction des noms d’utilisateur
- who | awk ‘{print $1,$4}’ — noms et heures de connexion
- awk ‘{print $1,$2,$NF}’ fichier.txt — premier, deuxième et dernier champ
Outil
Usage principal
Avantage
Complexité
awk
Extraction et formatage multi-champs
Puissant pour rapports et calculs
Modérée
sed
Édition de flux et substitutions
Simplifie modifications en ligne
Faible à modérée
cut
Découpage simple par délimiteur
Rapide pour colonnes fixes
Faible
grep
Recherche par motif
Filtrage rapide de lignes
Faible
« J’ai remplacé des pipelines compliqués par awk et gagné du temps chaque jour. »
Claire D.
Séparateurs, motifs et actions : contrôler la sélection de texte
À partir de la syntaxe de base, le choix des séparateurs et des motifs conditionne la sélection des données. Par exemple /etc/passwd utilise ‘:’ comme séparateur, donc awk -F: facilite l’extraction. Selon Aho et al., les expressions régulières dans awk offrent un filtrage fin des lignes.
Cas d’usage courant :
- Filtrage UID >= 1000 pour comptes utilisateur
- Extraction UUID dans /etc/fstab pour systèmes montés
- Formatage date avec OFS pour rapports chronologiques
Utiliser -F et OFS pour contrôler les champs
Ce sous-point montre comment définir FS et OFS pour adapter l’entrée et la sortie. Par exemple date | awk ‘OFS= »- » {print $2,$3,$6}’ produit une sortie lisible pour rapports.
Exemples pratiques et interprétations
Cette démonstration met en regard commandes et buts pratiques pour faciliter l’apprentissage. Les commandes présentées ci-dessous illustrent l’extraction, le filtrage et le formatage.
Commande
But
Remarque
who | awk ‘{print $1}’
Lister noms d’utilisateurs connectés
Pratique pour journaux rapides
who | awk ‘{print $1,$4}’
Afficher nom et heure de connexion
Concatène champs avec espace
awk -F: ‘$3 >= 1000 {print $1,$6}’ /etc/passwd
Lister comptes utilisateur réguliers
Basé sur UID système
awk ‘/^UUID/ {print $1}’ /etc/fstab
Extraire UUID des systèmes montés
Filtre lignes commençant par UUID
« En production, j’ai automatisé l’inventaire des machines avec awk et cron. »
Marc L.
Scripts awk, fonctions intégrées et bonnes pratiques pour la production
Après l’approche des motifs et séparateurs, mettre awk dans des scripts améliore la réutilisabilité et la robustesse des traitements. Le script exemple démontre l’usage de FS, OFS, et des règles BEGIN et END pour produire un petit rapport. Selon How-To Geek, ces techniques facilitent l’automatisation sur GNU Linux et distributions variées.
Points de mise en œuvre :
- Inclure une ligne shebang pour exécuter le script directement
- Définir FS et OFS au début pour cohérence des champs
- Utiliser BEGIN pour en-têtes et END pour résumés
Écrire des scripts awk réutilisables et robustes
Ce paragraphe montre le schéma général d’un script awk prêt pour la production. Définissez FS et OFS, modifiez les champs si nécessaire, puis comptez ou agrégez dans END. Ce schéma s’applique sur Red Hat, CentOS, OpenSUSE et autres distributions.
« J’écris des scripts awk dans mon Shell pour nettoyer des exports CSV quotidiennement. »
Alice G.
Fonctions intégrées, optimisation et usage avancé
Cette section détaille l’usage des fonctions numériques et de chaîne disponibles dans awk, comme sqrt et atan2. Les fonctions acceptent des expressions et simplifient des calculs qui demanderaient plus de code dans un autre langage. Utiliser fonctions et bonnes pratiques optimise les traitements sur serveurs Mandriva ou OpenSUSE anciens et récents.
À titre d’exemple, awk ‘BEGIN { print sqrt(625) }’ calcule la racine carrée immédiatement. Pour analyses statistiques simples, appeler des fonctions intégrées réduit les erreurs et accélère l’exécution. Cet usage conduit naturellement à surveiller la maintenabilité et la clarté des scripts.
« Avis technique : awk reste élégant et adapté aux pipelines complexes. »
Jean N.
Source : Alfred Aho, Peter Weinberger, Brian Kernighan, « The AWK Programming Language », Addison-Wesley, 1988 ; Free Software Foundation, « gawk: GNU awk », GNU Project ; How-To Geek, « How to Use AWK », How-To Geek.