sed et awk – Manipulation avancée de texte
✂️ sed
– Stream Editor
sed
– Stream Editorsed
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
– Langage de manipulation de texteawk
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
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
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 commentairegsub("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