← retour aux snippets

sed: supprimer les séquences ANSI des logs

Nettoyer les codes d'échappement couleurs pour des logs lisibles/parsables.

bash text #sed#ansi#clean

objectif

Enlever les séquences d’échappement (CSI) qui perturbent la lecture et le parsing.

code minimal

# retirer la plupart des séquences ANSI
sed -r 's/\x1B\[[0-9;?]*[ -/]*[@-~]//g' colored.log > clean.log

utilisation

# pipeline
make 2>&1 | sed -r 's/\x1B\[[0-9;?]*[ -/]*[@-~]//g' | tee build.log

variante(s) utile(s)

# awk équivalent
awk '{gsub(/\x1B\[[0-9;?]*[ -/]*[@-~]/,""); print}' colored.log

notes

  • la regex couvre la famille CSI; d’autres séquences existent (OSC).
  • pour un nettoyage robuste OSC: s/\x1B\].*?(\x07|\x1B\\)//g (GNU sed non-greedy via Perl? préférez awk/perl).