C'est quoi, awk ?
awk est un langage de traitement de texte orienté lignes et colonnes. Il lit chaque ligne, la découpe en champs, et permet d'effectuer des opérations complexes : calculs, conditions, reformatage.
💡 L'analogie : awk, c'est un tableur programmable en ligne de commande. Chaque ligne est une rangée, chaque mot séparé par un espace est une colonne.
# Afficher la 1ère colonne
$ awk '{print $1}' fichier.txt
# Séparateur personnalisé
$ awk -F, '{print $2}' données.csv
# Somme d'une colonne
$ awk '{sum += $3} END {print "Total:", sum}' ventes.txt
# Filtrer les lignes > 1000
$ awk '$3 > 1000 {print $1, $3}' ventes.txt
# Sauter l'entête CSV (ligne 1)
$ awk 'NR > 1' données.csv
# Reformater /etc/passwd
$ awk -F: '{print $1 " → " $6}' /etc/passwd
Variables spéciales
| Variable | Signification |
|---|---|
| $0 | La ligne entière |
| $1, $2... | Le 1er, 2ème champ... |
| $NF | Le dernier champ |
| NR | Numéro de ligne courant |
| NF | Nombre de champs dans la ligne |
| FS | Séparateur de champs (défaut: espace) |
# Moyenne d'une colonne
$ awk '{sum+=$1; n++} END {print sum/n}' notes.txt
# PIDs des processus python
$ ps aux | awk '/python/ {print $2}'
# Nb de requêtes par code HTTP
$ awk '{codes[$9]++} END {for(c in codes) print c, codes[c]}' access.log