Aller au contenu

Aide-mémoire sed + awk

Cette page résume des exemples pratiques en combinant sed (substitution, nettoyage) et awk (filtrage, calculs).


Nettoyage avec sed, extraction avec awk

# Supprimer les commentaires (#...) puis extraire la 1ère colonne
sed 's/#.*//' fichier | awk '{print $1}'

Filtrage avec awk, remplacement avec sed

# Remplacer "foo" par "bar" uniquement dans les lignes où la 2e colonne > 100
awk '$2 > 100' fichier | sed 's/foo/bar/g'

Traitement CSV

# Extraire la 2ème colonne, enlever les guillemets
awk -F';' '{print $2}' fichier.csv | sed 's/"//g'

Suppression de colonnes

# Supprimer la 1ère colonne (awk) puis supprimer les espaces multiples (sed)
awk '{$1=""; print $0}' fichier | sed 's/  */ /g'

Extraction et transformation

# Extraire la colonne "nom", passer en majuscule
awk -F',' '{print $1}' fichier.csv | sed 's/.*/\U&/'

Comptage + mise en forme

# Compter les occurrences d'un mot, afficher avec formatage
grep -o "mot" fichier | awk '{c++} END {print "Total:", c}' | sed 's/Total:/==>/'

Chaînage multi-étapes

# Exemple : log Apache
# - Supprimer les IP privées
# - Extraire le code HTTP (9e champ)
# - Compter chaque code
sed -E '/^(10\.|192\.168\.)/d' access.log \
  | awk '{print $9}' \
  | sort | uniq -c | sort -nr

Substitution conditionnelle

# Remplacer "old" par "new" uniquement si ligne contient "match"
awk '/match/ {print $0}' fichier | sed 's/old/new/g'

Cas pratiques courants

  • Nettoyer un fichier CSV avant analyse : sed pour supprimer caractères indésirables, awk pour filtrer et calculer.
  • Logs systèmes : sed pour tronquer/simplifier, awk pour stats et regroupements.
  • Fichiers de conf : sed pour modifier des valeurs, awk pour extraire uniquement certaines colonnes.

Astuce

  • Toujours tester avec sed -n p ou awk '{print ...}' avant d’écrire dans le fichier.
  • Les deux peuvent être remplacés dans certains cas par perl qui combine substitution + logique.