SED ::..

Introduction :.

Le nom vient de "Stream EDitor", c'est à dire un éditeur qui travail au fil de l'eau, au fur et à mesure. La commande sed est utilisée soit en ligne ou dans un script pour modifier le contenu d'un fichier texte.

Travailler avec SED :.

En principe, SED permet de travailler rapidement en ligne pour modifier le contenu d'un fichier texte ou des donnnées existantes.

Ne pas oublier de consulter le "man sed" en mode commande pour découvrir toutes les possibilité.
dans la console vous pouvez aussi demander de l'aide avec :

 

$ sed --help
Utilisation: sed [OPTION]... {script-seulement-si-pas-d'autre-script}
[fichier-d'entrée]...

  -n, --quiet, --silent
                 supprimer l'écriture automatique de l'espace des motifs
  -e script, --expression=script
                 ajouter le script aux commandes à être exécutées
  -f fichier-script, --file=fichier-script
...
...

Travaux pratiques :.

Nous allons faire des petits exercices avec sed en utilisant un fichier texte que je vous propose d'ajouter dans votre répertoire de travail. Appelons le simplement un fichier "test"


$ cat test
"12345";"NOM";"Prenom";"Ville"
"23233";"ROCHAT";Marcel";"Lyon"
"32344";"LEGENDRE";"Malou";"Avignon"
$ 

Un premier essai tout simple avec pour but de changer les séparateurs du fichier test ; par des ,


$ sed 's/;/,/g' test
"12345","NOM","Prenom","Ville"
"23233","ROCHAT",Marcel","Lyon"
"32344","LEGENDRE","Malou","Avignon"
$

Commande substitution avec cet exemple, on cherche "ici" et on le change par "la" ceci dans le fichier xxx.txt, mais ici on redirige le résultat non plus sur l'écram, mais dans un autre fichier, x.txt dans ce cas


$ sed -e "s/ici/la/" xxx.txt > x.txt

Ici avec l'emploi d'un fichier externe dan slequel est ecrit le srcpit de commande pour le traitement du fichier xxx.xtx


$ sed -f commande xxx.txt

Techniques avancées :.

Si l'on travaille sur de très gros fichiers texte, de plusieurs centaines de Mo, il devient intéressant d'optimiser le travail de recherche avec cet éditeur. En effet si l'on fait une recherche avant de lancer le changement, on gagne passablement de temps sur le travail.


$ sed -e '/","/ s//;/g' xxx.csv > xxx.new

En effet, le fait de faire une pré lecture avec les caractères entre les barres obliques / /, cela permet de gagner de la vitesse après. On ne renseigne plus que sous la forme simplifiée suivante: s//;/g , un vide et le caractère de remplacement, et voila on va plus vite !



Jean-Pierre Perroud, Switzerland,