sed et awk – Manipulation avancée de texte

✂️ sedStream Editor

sed est un éditeur de flux qui permet d’appliquer des transformations sur un fichier ou un flux de texte. Il est particulièrement utile pour le remplacement de texte, la suppression de lignes et les substitutions conditionnelles.

📌 Exemple : Remplacer "chat" par "chien" dans un fichier

sed 's/chat/chien/g' fichier.txt

➡️ Remplace toutes les occurrences de "chat" par "chien".

📌 Supprimer la 3ᵉ ligne d’un fichier

sed '3d' fichier.txt

📌 Supprimer les lignes contenant "erreur"

sed '/erreur/d' fichier.txt

📝 awk – Langage de manipulation de texte

awk est un langage puissant conçu pour travailler avec des fichiers texte et extraire des informations en fonction de motifs et de délimiteurs.

📌 Historique

Créé par Alfred Aho, Peter Weinberger et Brian Kernighan, awk est un outil incontournable pour le traitement de données orienté ligne.

🔍 Principes de base

  • Ligne complète : stockée dans $0

  • Champs individuels : $1, $2, ..., $NF (dernier champ)

  • Nombre de champs dans une ligne : NF

  • Définition du séparateur de champs :

    BEGIN { FS=";" }  # Définit ";" comme délimiteur

📌 Expressions en awk

🔹 Expressions régulières (//)

  • Trouver tous les fichiers .txt

    /\w+\.txt/
  • Exclure les lignes commençant par un tiret

    !/^-/

🔹 Comparaisons

  • Sélectionner les lignes où la 5ᵉ colonne est "Jun"

    $5 == "Jun"
  • Sélectionner les lignes où la 5ᵉ colonne contient "May" ou "Jun"

    $5 ~ /May|Jun/

🔹 Appel de fonction

  • Vérifier si une ligne est un lien symbolique

    is_link($0)

🎯 Exemples pratiques en awk

🚀 Supprimer les lignes 10 à 20

awk 'NR < 10 || NR > 20' fichier.txt

➡️ Affiche uniquement les lignes en dehors de cette plage.

🕵️ Modification de commentaires (exemple de plagiat)

awk '/\s*#/ {gsub("Torvalds", "Gates"); print} !/\s*#/' fichier.txt

➡️ Remplace "Torvalds" par "Gates" dans toutes les lignes contenant un commentaire (#).

Explication :

  • /\s*#/ → Sélectionne les lignes contenant un commentaire

  • gsub("Torvalds", "Gates") → Remplace "Torvalds" par "Gates"

  • print → Affiche la ligne modifiée

  • !/\s*#/ → Conserve les autres lignes sans modification


🏗️ Structures et concepts avancés

🔹 Types de variables

  • Chaîne de caractères (String)

  • Numérique (Numeric)

  • Tableau associatif (Array)

🔹 Structures de contrôle

awk utilise des structures similaires au C :

  • if, while, do-while, for, switch

Last updated