Sed
C’est l’outil absolu pour modifier du texte en le passant par un pipe ! Ou pour effectuer des changements en masses sur un fichier sans l’ouvrir. Bref, comme le dit l’adage : « Sed, c’est bien » 😁
Il est possible de faire des trucs de tarés avec (hey, c’est pas juste un truc pour faire des substitutions à coup d’expressions rationnelles, c’est un vrai éditeur de texte, on peut se balader dans le texte, faire des copier/coller, etc).
Usage classique
On va prendre comme exemple la substitution qui transforme foo
en bar
.
Pour modifier la sortie d’une commande :
echo 'foo' | sed -e 's/foo/bar/'
Pour afficher un fichier en modifiant son contenu (seul l’affichage est modifié, le fichier ne change pas) :
sed -e 's/foo/bar/' fichier.txt
Pour modifier un fichier (là ça change le fichier) :
sed -e 's/foo/bar/' -i fichier.txt
Pour supprimer les retours à la ligne (là je les remplace par des espaces) :
echo -e "foo\nbar" | sed -z 's/\n/ /g'
echo -e "foo\nbar" | sed ':a;N;$!ba;s/\n/ /g'
NB : on peut aussi utiliser tr
.
echo -e "foo\nbar" | tr '\n' ' '