Sed

Un article de Haypo.

Retour aux logiciels libres

sed est un outil permettant d'utiliser des expressions rationnelles pour extraire une sous-chaîne selon un motif et/ou effectuer des remplacement.

Sommaire

[modifier] Exemples

  • « sed -e 's/a/b/' » remplace la première occurance de a par b
  • « sed -e 's/[0-9]+//g' fichier » supprime tous les nombres entiers du fichier
  • « sed -e 's/[0-9]+//g' -i fichier » supprime tous les nombres entiers du fichier en sauvant le résultat directement dans le fichier (fonctionne avec la version 4.1 en tout cas)
  • « sed -f script' » utilise les commandes (une par ligne) écrites dans le script spécifié

[modifier] Syntaxe des scripts sed

Opérations les plus courantes :

  • s/motif/remplacement/options : Remplace une sous-chaîne par une autre (motif étant une expression rationnelle). Options de remplacement :
    • s/a/b/g : Remplace toutes les occurances
    • s/a/b/i : Ne tient pas compte de la casse (minuscule/majuscule) pour le motif de recherche
  • /motif/D : Supprime la ligne correspondant au motif. Exemple : « /^$/D » supprime les lignes vides.

Mais sed a son propre langage qui permet d'écrire de vrai scripts bien plus complexe que ça. Se référer à la documentation pour les détails.

[modifier] Lancer sed sur tous les fichiers .cpp d'un répertoire

Petit script bash pour lancer un script sur les fichiers « *.cpp » du répertoire courant :

#!/bin/bash
for f in *.cpp; do
   sed -f script $f >$f.tmp
   rm $f
   mv $f.tmp $f
done

[modifier] Voir aussi

Récupérée de « http://www.haypocalc.com/wiki/Sed »