Aller au contenu

Aide-mémoire awk

Utilisation de base

awk 'programme' fichier
commande | awk 'programme'
  • awk lit chaque ligne, la découpe en champs ($1, $2, …) selon un séparateur (par défaut : espace/tab).
  • $0 = ligne complète
  • NF = nombre de champs
  • NR = numéro de ligne

Séparateur

# Spécifier un séparateur d’entrée (ex: CSV avec ;)
awk -F';' '{print $1, $3}' fichier

# Spécifier un séparateur de sortie
awk -F',' 'BEGIN {OFS=";"} {print $1,$2}' fichier

Impression de colonnes

# Afficher la 1ère colonne
awk '{print $1}' fichier

# Afficher la 1ère et la 3ème
awk '{print $1, $3}' fichier

# Afficher la dernière colonne
awk '{print $NF}' fichier

Filtres (conditions)

# Afficher les lignes contenant "mot"
awk '/mot/ {print $0}' fichier

# Afficher la 2ème colonne si la 3ème vaut 100
awk '$3 == 100 {print $2}' fichier

# Afficher les lignes où la 1ère colonne est > 50
awk '$1 > 50' fichier

Calculs

# Additionner la 2ème colonne
awk '{s+=$2} END {print s}' fichier

# Moyenne de la 2ème colonne
awk '{s+=$2; n++} END {print s/n}' fichier

# Valeur max de la 2ème colonne
awk 'NR==1 {max=$2} $2>max {max=$2} END {print max}' fichier

Structures

# Bloc BEGIN (avant lecture)
awk 'BEGIN {print "Début"} {print $0} END {print "Fin"}' fichier

# If/Else
awk '{if ($2 > 100) print $1 " OK"; else print $1 " KO"}' fichier

# Boucle sur champs
awk '{for (i=1; i<=NF; i++) print $i}' fichier

Exemples pratiques

# Extraire utilisateurs du /etc/passwd
awk -F':' '{print $1}' /etc/passwd

# Taille totale d’un répertoire (ls -l)
ls -l | awk '{s+=$5} END {print s}'

# Trouver la ligne la plus longue
awk 'length($0) > max {max=length($0); ligne=$0} END {print ligne}' fichier

# Afficher la moyenne et le max de la colonne 3
awk '{s+=$3; if($3>m) m=$3} END {print "Moyenne:", s/NR, "Max:", m}' fichier