Sed

De wiki jackbot
Aller à la navigation Aller à la recherche


sed est un outil en ligne de commande permettant la manipulation de texte. Quand les modifications d'un fichier risque d'être longues et fastidieuses, il faut faire appel à sed. Voici une liste de commande très utile :

sed -i 's/un_mot/un_autre_mot/g' fichier.txt

Cette ligne de commande va remplacer toutes les occurrences de : "un_mot" par : "un_autre_mot" dans le fichier.txt

Mais il peut arriver qu'on souhaite modifier du texte qu'on ne connaît pas, c'est là qu'intervienne les expressions régulières ou regex.

sed -i 's/<balise>.*<\/balise>/<balise>nouveau contenu<\/balise>/g' fichier.xml

Dans ce cas l'expression régulière '.' correspond à n'importe quel caractère et '*' à n'importe quelle quantité. En d'autres termes peut importe les caractères et leur nombre, tout ce qui se trouve entre les balises sera remplacé par "nouveau contenu". Il est à noté qu'ici il est nécessaire d'échapper le caractère '/' dans "</balise>", car il s'agit du même caractère qui est utilisé comme séparateur dans la commande sed. Heureusement il est tout à fait possible d'utiliser un autre séparateur. La commande :

sed -i 's:<balise>.*</balise>:<balise>nouveau contenu</balise>:g' fichier.xml

Donnera exactement le même résultat. Mais vu qu'on utilise le séparateur ':' pour la commande sed, il n'est plus nécessaire d'échapper le caractère '/' dans "</balise>"