420-1Q1-AA Help

Sed

La commande sed (stream editor) sous Linux est un éditeur de flux permettant de traiter et de manipuler des données textuelles.

Elle est souvent utilisée pour rechercher, remplacer, insérer ou supprimer des chaînes de texte dans des fichiers sans les ouvrir dans un éditeur.

sed est particulièrement utile dans les scripts pour effectuer des modifications en masse.

Syntaxe de base

sed [options] 'commande' fichier
  • commande: La commande à appliquer (ex. : s pour remplacer du texte).

  • fichier: Le fichier ou flux d'entrée sur lequel appliquer la commande.

Principales commandes de sed

  1. Substitution (s)

    • Cette commande remplace un texte par un autre.

    • Syntaxe : sed 's/texte_ancien/texte_nouveau/' fichier

    Exemple :

    sed 's/chien/chat/' animaux.txt

    Remplace la première occurrence de chien par chat sur chaque ligne de animaux.txt.

  2. Global Substitution (g)

    • En ajoutant l'option g, sed remplace toutes les occurrences d'un texte sur chaque ligne.

    Exemple :

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

    Remplace toutes les occurrences de chien par chat sur chaque ligne de animaux.txt.

  3. Substitution avec sauvegarde (-i)

    • -i permet de faire la substitution directement dans le fichier sans afficher le résultat en sortie.

    Exemple :

    sed -i 's/chien/chat/g' animaux.txt

    Modifie animaux.txt directement, en remplaçant toutes les occurrences de chien par chat.

  4. Supprimer des lignes (d)

    • d permet de supprimer des lignes spécifiques.

    Exemple :

    sed '3d' fichier.txt

    Supprime la troisième ligne de fichier.txt.

    Supprimer toutes les lignes contenant un mot spécifique :

    sed '/chien/d' animaux.txt

    Supprime toutes les lignes contenant chien.

  5. Afficher uniquement certaines lignes (-n et p)

    • p (print) permet d'afficher des lignes spécifiques, et -n masque la sortie par défaut.

    Exemple :

    sed -n '2p' fichier.txt

    Affiche seulement la deuxième ligne de fichier.txt.

    Afficher les lignes contenant un mot spécifique :

    sed -n '/chien/p' animaux.txt

    Affiche uniquement les lignes contenant chien dans animaux.txt.

  6. Insertion et ajout de texte

    • i: Insère une ligne avant une ligne spécifiée.

    • a: Ajoute une ligne après une ligne spécifiée.

    Exemple :

    sed '2i\Texte ajouté avant la deuxième ligne' fichier.txt

    Insère "Texte ajouté avant la deuxième ligne" avant la deuxième ligne de fichier.txt.

    Exemple avec a:

    sed '2a\Texte ajouté après la deuxième ligne' fichier.txt

    Ajoute "Texte ajouté après la deuxième ligne" après la deuxième ligne.

Utilisation des expressions régulières avec sed

sed est compatible avec les expressions régulières, ce qui le rend puissant pour les recherches avancées.

  1. Rechercher en début de ligne (^)

    sed 's/^Bonjour/Salut/' fichier.txt

    Remplace Bonjour par Salut uniquement en début de ligne.

  2. Rechercher en fin de ligne ($)

    sed 's/!$/./' fichier.txt

    Remplace ! par . seulement si ! se trouve à la fin de la ligne.

  3. Caractères spéciaux

    • Utilisez \ pour échapper les caractères spéciaux comme /, . ou *.

    Exemple :

    sed 's/http:\/\/site.com/https:\/\/site.com/' fichier.txt

    Remplace http://site.com par https://site.com dans fichier.txt.

Exemples Pratiques

  1. Remplacer toutes les occurrences d'un mot dans plusieurs fichiers

    sed -i 's/ancien/nouveau/g' *.txt

    Remplace toutes les occurrences de ancien par nouveau dans tous les fichiers .txt du dossier.

  2. Supprimer toutes les lignes vides

    sed '/^$/d' fichier.txt

    Supprime toutes les lignes vides dans fichier.txt.

  3. Ajouter un texte en début de chaque ligne

    sed 's/^/>> /' fichier.txt

    Ajoute >> au début de chaque ligne dans fichier.txt.

  4. Extraire un intervalle de lignes

    sed -n '5,10p' fichier.txt

    Affiche uniquement les lignes 5 à 10 de fichier.txt.

  5. Remplacer des chaînes avec des caractères spéciaux

    sed 's/1\.0/2.0/g' version.txt

    Remplace 1.0 par 2.0 dans version.txt.

Utilité de sed en scripts

sed est couramment utilisé dans les scripts pour :

  • Modifier des fichiers de configuration.

  • Préparer des données pour l’analyse.

  • Réaliser des transformations en masse sur des fichiers texte.

Last modified: 16 October 2024