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 :
sedpour supprimer caractères indésirables,awkpour filtrer et calculer. - Logs systèmes :
sedpour tronquer/simplifier,awkpour stats et regroupements. - Fichiers de conf :
sedpour modifier des valeurs,awkpour extraire uniquement certaines colonnes.
Astuce¶
- Toujours tester avec
sed -n pouawk '{print ...}'avant d’écrire dans le fichier. - Les deux peuvent être remplacés dans certains cas par
perlqui combine substitution + logique.