La commande sed

sed [options] 'fonctions' <fichier-entrée>

La commande sed (Stream EDitor) est utilisée pour transformer le contenu d'un flux d'entrée, comme par exemple les caractères d'un fichier texte affiché à l'écran. Notons que cette commande est compatible avec les expressions régulières.

Pour une liste exhaustive des options et des fonctionnalités, consultez le manuel de la commande (man sed).


Description

Voici le synopsis pour sed obtenu à partir de man sed :

sed [options] 'fonctions' <fichier-entrée>

La commande peut exécuter plusieurs fonctions à la fois, fonctions qu'il convient de séparer par un « ; ». À la section Exemples, les fonctions d (effacer), s (chercher) et y (échanger) sont présentées.

La commande sed fonctionne comme suit :

  • lecture d'une ligne sur le flux d'entrée;
  • traitement de la ligne selon les fonctions demandées;
  • passage à la ligne suivante.

La sortie de la commande est, par défaut, affichée à l'écran mais celle-ci peut être redirigée, dans un fichier par exemple.

Avec l'option -e, la commande sed s'exécute à partir du terminal alors qu'avec l'option -f, elle exécute les fonctions contenues dans un fichier script :

sed -f <fichier_script> [options] 'fonctions' <fichier-entrée>

Exemples

Suppression

  • Avec la commande
sed -e '4d; 7d' test.txt

les lignes 4 et 7 du fichier test.txt sont effacées et le résultat est affiché à l'écran. Pour rediriger la sortie vers un fichier, test2.txt par exemple, il suffit d'entrer

sed -e '4d; 7d' test.txt > test2.txt
  • L'effacement de lignes où un certain motif (expression régulière) est trouvé est également possible. Le motif à rechercher doit être balisé par 2 symboles « / ». Par exemple,
sed '/^#/ d' test.txt

supprime toutes les lignes débutant par un dièse (^ signifie « début de ligne »).

  • La commande sed peut effacer une plage de texte comprise entre deux motifs :
sed '/^Bonjour/,/^Au revoir/d' test.txt 

supprime toutes les lignes comprises entre « Bonjour » et « Au revoir ».

Chercher et remplacer

La fonction s de la commande sed offre la possibilité de rechercher un motif et de le remplacer par un autre :

s/motifRecherché/motifSubstitut/

Par défaut, le remplacement de motifRecherché par motifSubstitut n'a lieu que pour la première occurrence du motif cherché pour la ligne en cours de lecture. Pour que le remplacement soit effectué pour toutes les occurrences de chaque ligne, il faut terminer la fonction par g  :

s/motifRecherché/motifSubstitut/g

Dans l'exemple ci-dessous, toutes les occurrences de « Paris » sont remplacées par « Montréal » dans fichier.txt :

sed -e 's/Paris/Montréal/g' fichier.txt

Échange de caractères

syntaxe : y/listeCaractères/listeRemplacants/.

sed -re ''''y'''/éèê/eee/' test.txt

remplace les 'e' accentués par des 'e' sans accents.

Voir aussi

Articles connexes


La dernière modification de cette page a été faite le 15 mai 2020 à 09:57.