Commande Linux
awk
Aho Weinberger Kernighan
"Traiter du texte colonne par colonne. Un langage de programmation déguisé en commande."
Texte ⭐⭐⭐ Avancé 🔥 Puissante

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.
Bases d'awk
# 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

VariableSignification
$0La ligne entière
$1, $2...Le 1er, 2ème champ...
$NFLe dernier champ
NRNuméro de ligne courant
NFNombre de champs dans la ligne
FSSéparateur de champs (défaut: espace)
One-liners mythiques
# 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
← Précédent
cut
Suivant →
sed