Différences entre les versions de « La commande sed »

Ligne 15 : Ligne 15 :
 
sed [options] 'fonctions' <fichier-entrée>
 
sed [options] 'fonctions' <fichier-entrée>
 
</pre>
 
</pre>
On peut résumer le mécanisme de fonctionnement de <tt>sed</tt> de cette façon&nbsp;:
+
La commande peut exécuter plusieurs fonctions à la fois, fonctions qu'il convient de séparer par un &laquo;&nbsp;<tt>;</tt>&nbsp;&raquo; (voir la section [[La_commande_sed#Exemples|Exemples]].
 +
 
 +
Le fonctionnement de <tt>sed</tt> est le suivant&nbsp;:
  
 
* lecture d'une ligne sur le flux d'entrée;
 
* lecture d'une ligne sur le flux d'entrée;
 
* traitement de la ligne selon les fonctions demandées&nbsp;:
 
* traitement de la ligne selon les fonctions demandées&nbsp;:
* [[Pipelining_et_redirection#Redirection|redirection]] du résultat (vers l'écran ou un fichier);
 
 
* passage à la ligne suivante.
 
* passage à la ligne suivante.
  
# On peut écrire les commandes directement dans la ligne de commande, avec l'option sed '''-e'''. On séparera les commandes par des point-virgules; <pre>sed -e 'fonction sed' [fichier.txt]</pre>
+
La sortie de la commande est, par défaut, affichée à l'écran mais celle-ci pour être [[Pipelining_et_redirection#Redirection|redirigée]], dans un fichier par exemple.
 +
 
 +
La commande <tt>sed</tt> s'exécute à partir du terminal avec l'option <tt>-e</tt>&nbsp;:
 +
<pre>
 +
sed -e 'fonction sed' [fichier.txt]
 +
</pre>
 +
 
 +
 
 
# On peut passer à sed un script (fichier externe) contenant les commandes pour le traitement (myScriptFile), avec l'option sed '''-f''' myScriptFile. <pre>sed -f fichier_script [fichier.txt]</pre>
 
# On peut passer à sed un script (fichier externe) contenant les commandes pour le traitement (myScriptFile), avec l'option sed '''-f''' myScriptFile. <pre>sed -f fichier_script [fichier.txt]</pre>
 
* redirection du résultat, différentes options s'offrent:
 
* redirection du résultat, différentes options s'offrent:

Version du 21 mai 2013 à 16:31

sed [options] <fichier-entrée>

La commande sed (Stream EDitor) est utilisée pour transformer le texte d'un flux d'entrée, comme par exemple un fichier affiché à l'écran. Notamment, les fonctionnalités de substitutions de chaînes de caractères permettent de rechercher du texte dans des fichiers te de remplacer les occurences par une autre expression. 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).


Guide

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 « ; » (voir la section Exemples.

Le fonctionnement de sed est le suivant :

  • 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 pour être redirigée, dans un fichier par exemple.

La commande sed s'exécute à partir du terminal avec l'option -e :

sed -e 'fonction sed' [fichier.txt]


  1. On peut passer à sed un script (fichier externe) contenant les commandes pour le traitement (myScriptFile), avec l'option sed -f myScriptFile.
    sed -f fichier_script [fichier.txt]
  • redirection du résultat, différentes options s'offrent:
  1. On peut afficher le résultat sur la sortie standard (écran) ou le rediriger vers un nouveau fichier avec le symbole > (On garde intact le fichier en entrée).
    sed -e 'fonction sed' [fichier.txt] > fichierTraite.txt 
  2. On peut afficher directement le résultat dans le fichier passé en entrée, on modifie alors le fichier en entrée avec l'option sed -i;
    sed -i 'fonction sed' [fichier.txt]
  • passage à la ligne suivante.

Exemples

Suppression

sed -e '4d; 7d' test.txt

efface les lignes 4 et 7 (option d pour delete) du texte du fichier test.txt et affiche le résultat à l'écran.
On peut aussi utiliser des expressions régulières (regex) pour appliquer la commande sur toutes les lignes où le motif est trouvé. On décrit un motif comme ceci : /motif/

 sed '/^#/ d' test.txt 

supprime toutes les lignes commençant par une dièse (^ signifie début de ligne) pour l'affichage.
On peut définir une plage de texte comprise entre le motif 1 et le motif 2 avec : /motif1/,/motif2/

sed '/^Bonjour/,/^Au revoir/d' test.txt 

supprime toutes les lignes comprises entre 'Bonjour' et 'Au revoir' du texte du fichier test.txt et affiche le résultat à l'écran.

Chercher et remplacer

La commande sed permet de rechercher et remplacer du texte à partir d'expressions régulières ou de chaîne de caractères.
Syntaxe : s/motifRecherché/substitut/
La substitution va se faire sur la première occurrence du motif.

Pour que le remplacement se fasse sur tout le texte, il faut ajouter l'option g comme ceci : s/motif/substitut/g

sed -e 's/Paris/Montreal/g' fichier.txt

remplace toutes les occurrences de Paris par Montreal dans le texte passé en entrée et affiche le résultat à l'écran.

Le motif recherché peut être une regex mais le substitut doit rester une chaîne de caractères.
NB : le substitut accepte quand même le métacaractère &, ainsi que les références arrières telles que \1 (de 1 à 9).

sed -re 's/^# *//' nomFichier

Le motif

/^# */

correspond aux lignes commentées (aux lignes commençant par #) suivies d'un ou plusieurs espaces (* est un métacaractère signifiant 0 ou plus). Le substitut est vide. Cette commande va donc décommenter et supprimer les espaces au début des lignes commentées du contenu de nomFichier et afficher le résultat à l'écran.


sed -re 's/\t/ /g' nomfichier 

remplace les tabulations par un espace.

É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

Commandes élémentaires


La dernière modification de cette page a été faite le 21 mai 2013 à 16:31.