Manipulation avancée de texte (sed, awk)
Explorez « sed » pour modifier des flux, et « awk » pour traiter efficacement le texte, rechercher des motifs et extraire des données.
Manipulation avancée de texte (sed, awk) est une leçon DevOps Bootcamp gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage DevOps Bootcamp, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours DevOps Bootcamp comprend 4 leçons au total.
Modifier des flux avec sed
sed, abréviation de « éditeur de flux », est un utilitaire puissant en ligne de commande qui sert à analyser et transformer du texte. Il traite les flux de texte ligne par ligne. Vous pouvez le considérer comme un éditeur de texte non interactif.
sed lit une ligne, applique une commande (telle qu’une substitution ou une suppression), affiche le résultat, puis passe à la ligne suivante. Cela le rend très efficace pour les fichiers volumineux ou les données transmises par tube.
Substitution de texte simple
L’utilisation la plus courante de sed consiste à remplacer du texte. Nous utilisons la commande s, suivie d’un séparateur (souvent /), du motif à rechercher, d’un autre séparateur, du texte de remplacement, puis d’un dernier séparateur.
Syntaxe : sed 's/pattern/replacement/' filename
Essayez de remplacer « apple » par « orange » dans un fichier d’exemple :
#!/bin/bash
# Create a sample file
echo "I like red apple." > fruits.txt
echo "My favorite fruit is apple." >> fruits.txt
echo "Another apple here." >> fruits.txt
echo "Original content:"
cat fruits.txt
echo ""
echo "---"
echo "Running sed command:"
sed 's/apple/orange/' fruits.txt
# Clean up
rm fruits.txtGlobal et insensible à la casse
Par défaut, sed ne remplace que la première occurrence d’un motif sur chaque ligne. Pour remplacer toutes les occurrences d’une ligne, utilisez l’indicateur g (global).
Pour effectuer une recherche insensible à la casse, utilisez l’indicateur i. Vous pouvez combiner les indicateurs, par exemple gi.
Exemple : remplacer toutes les occurrences de "apple" (sans tenir compte de la casse) par "banana".
#!/bin/bash
# Create a sample file
echo "Apple is good." > fruits.txt
echo "I eat an apple and another Apple." >> fruits.txt
echo "Apples are tasty." >> fruits.txt
echo "Original content:"
cat fruits.txt
echo ""
echo "---"
echo "Running sed command (s/apple/banana/gi):"
sed 's/apple/banana/gi' fruits.txt
# Clean up
rm fruits.txtSupprimer des lignes avec sed
Vous pouvez également utiliser sed pour supprimer des lignes entières correspondant à un motif précis. Pour cela, utilisez la commande d.
Syntaxe : sed '/pattern/d' filename
C’est utile pour supprimer les lignes indésirables, comme les entrées de journalisation contenant "DEBUG" ou les lignes vides.
Supprimons les lignes contenant "error" :
#!/bin/bash
# Create a sample file
echo "INFO: User logged in." > log.txt
echo "WARNING: Disk space low." >> log.txt
echo "ERROR: File not found." >> log.txt
echo "INFO: Operation complete." >> log.txt
echo "ERROR: Permission denied." >> log.txt
echo "Original content:"
cat log.txt
echo ""
echo "---"
echo "Running sed command (/error/d):"
sed '/error/d' log.txt
# Clean up
rm log.txtawk : langage d’analyse de motifs
awk est un autre outil puissant de traitement de texte, souvent utilisé pour extraire des données et produire des rapports. Alors que sed est un éditeur de flux, awk ressemble davantage à un langage de programmation conçu pour le texte.
awk traite les fichiers texte ligne par ligne, tout comme sed. Toutefois, il considère chaque ligne comme un « enregistrement » et divise les enregistrements en « champs » (colonnes) selon un séparateur.
Par défaut, awk utilise les espaces blancs (espaces, tabulations) comme séparateur de champs.
Accéder aux champs de données
Dans awk, les champs sont désignés par $1, $2, $3, etc. $0 représente la ligne entière.
Vous pouvez afficher des champs précis à l’aide de la commande print entre accolades {}. La syntaxe est la suivante : awk '{ print $FIELD_NUMBER }' filename
Affichons les premier et troisième champs d’un simple fichier de données :
#!/bin/bash
# Create a sample file
echo "Name Age City" > data.txt
echo "Alice 30 NewYork" >> data.txt
echo "Bob 24 London" >> data.txt
echo "Charlie 35 Paris" >> data.txt
echo "Original content:"
cat data.txt
echo ""
echo "---"
echo "Running awk command (print $1, $3):"
awk '{print $1, $3}' data.txt
# Clean up
rm data.txtFiltrer des lignes avec awk
Tout comme sed, awk peut filtrer des lignes en fonction de motifs. Vous indiquez un motif avant le bloc d’action. L’action est exécutée uniquement sur les lignes qui correspondent au motif.
Syntaxe : awk '/pattern/ { action }' filename
Recherchons et affichons uniquement les noms des personnes de « London » :
#!/bin/bash
# Create a sample file
echo "Name Age City" > data.txt
echo "Alice 30 NewYork" >> data.txt
echo "Bob 24 London" >> data.txt
echo "Charlie 35 Paris" >> data.txt
echo "David 28 London" >> data.txt
echo "Original content:"
cat data.txt
echo ""
echo "---"
echo "Running awk command (/London/ {print $1}):"
awk '/London/ {print $1}' data.txt
# Clean up
rm data.txtInitialiser et finaliser avec awk
awk vous permet d’indiquer des actions à effectuer avant le traitement des lignes (BEGIN block) et après le traitement de toutes les lignes (END block).
Les blocs BEGIN sont parfaits pour afficher des en-têtes ou initialiser des variables. Les blocs END conviennent pour afficher des récapitulatifs, des totaux ou des pieds de page.
Ajoutons un en-tête et un pied de page à notre sortie :
#!/bin/bash
# Create a sample file
echo "Alice 30 NewYork" > data.txt
echo "Bob 24 London" >> data.txt
echo "Charlie 35 Paris" >> data.txt
echo "Original content:"
cat data.txt
echo ""
echo "---"
echo "Running awk command (BEGIN/END):"
awk 'BEGIN { print "--- User Data ---" } { print $1, $2 } END { print "--- End Report ---" }' data.txt
# Clean up
rm data.txtLogique conditionnelle dans awk
Vous pouvez utiliser des instructions if dans les blocs d’action de awk pour appliquer une logique en fonction des valeurs des champs ou d’autres conditions. Cela rend awk très puissant pour filtrer et transformer des données complexes.
Syntaxe : awk '{ if (condition) { action } }' filename
Affichons uniquement les utilisateurs âgés de plus de 25 ans :
#!/bin/bash
# Create a sample file
echo "Alice 30 NewYork" > data.txt
echo "Bob 24 London" >> data.txt
echo "Charlie 35 Paris" >> data.txt
echo "Diana 27 Berlin" >> data.txt
echo "Original content:"
cat data.txt
echo ""
echo "---"
echo "Running awk command (if $2 > 25):"
awk '{ if ($2 > 25) { print $1, $2 } }' data.txt
# Clean up
rm data.txtVérification rapide : sed et awk
Considérez le contenu suivant dans un fichier nommé names.txt :
John Doe,30,New York
Jane Smith,25,London
Peter Jones,40,Paris
Laquelle des commandes suivantes afficherait uniquement les noms (premier champ) des personnes âgées de plus de 30 ans ?
Récapitulatif : la puissance de sed et awk
Vous avez maintenant découvert la puissance de sed pour l’édition de flux et de awk pour le traitement avancé du texte !
sedest idéal pour effectuer des substitutions, suppressions et transformations simples, ligne par ligne.awkexcelle dans l’analyse de textes structurés, la manipulation des champs et l’application d’une logique conditionnelle pour extraire des données et produire des rapports.
Ces outils sont indispensables pour l’écriture de scripts, l’analyse des journaux et la manipulation des données dans l’environnement Linux.
Questions Fréquemment Posées
La leçon « Manipulation avancée de texte (sed, awk) » est-elle gratuite ?
Oui — le texte complet de « Manipulation avancée de texte (sed, awk) » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours DevOps Bootcamp, passe à CoddyKit PRO. Le cours DevOps Bootcamp comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Manipulation avancée de texte (sed, awk) » ?
Explorez « sed » pour modifier des flux, et « awk » pour traiter efficacement le texte, rechercher des motifs et extraire des données. Tu pratiques DevOps Bootcamp avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer DevOps Bootcamp ?
Aucune expérience préalable n'est requise. DevOps Bootcamp sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Manipulation avancée de texte (sed, awk) » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon DevOps Bootcamp ?
Oui. Chaque leçon DevOps Bootcamp inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Manipulation avancée de texte (sed, awk)
- Archivage et compression (tar, gzip, unzip)
- Utilisation du disque et informations système (df, du, uname)
- Trier et dédupliquer les données (sort, uniq, cut)