Ben c'est normal! Heu... c'est pas suffisant comme explication, alors je développe un peu:
sed -e 'texte entre simples-quotes' fichier_in > fichier_out
Tout ce qui est entre ' et ' est du texte simple passé à la commande sed. Donc pas de variables ($var), pas de commandes ($(ls -l)), pas de caractères spéciaux ($'\n'). Rien que du texte. Pour ajouter des variables, deux solutions:
- Mettre des doubles-quotes " au lieu des simples '. Dans ce cas, le shell reconnait certains caractères comme le $. Mais s'il y a d'autres $ (fin de ligne par exemple), il faut dire à l'interpréteur que ce ne sont pas des méta-caractères (signification spéciale), mais de simples caractères normaux, en les échappant: \$. S'il y en a beaucoup, c'est pas cool.
- Sortir les variables des simples-quotes pour que l'interpréteur n'interprète que ce qu'on veut. Un exemple valant mille mots...
1 2
| 1: sed -e "début...$var_1suite...$var_2fin..." fichier_in > fichier_out
2: sed -e 'début...'$var_1'suite...'$var_2'fin...' fichier_in > fichier_out |
En rouge, ce qui n'est pas interprété par le shell. En noir ce que le shell va pouvoir interpréter. $var_1 et $var_2 vont être remplacés par leurs valeurs respectives.
Partager