Sed
Un article de Haypo.
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

