sed échoue avec l'erreur" option inconnue à "s"
J'essaie d'utiliser
sed -i -e "s/.*seb.*/ "$ftp_login_template"/" $ftp_dir
Cependant, je reçois cette erreur:
sed: -e expression #1, char 34: unknown option to `s'
Je ne comprends pas pourquoi puisque cela fonctionne parfaitement:
sed -i -e "s/.*wbspassword.*/ "wbspassword": "$password",/" $user_conf
Des idées sur ce que je fais mal?
Cela pourrait-il être le problème?
ftp_login_template=${user}:${password}:24:86::/var/lib/clit.${user}/downloads:/bin/false"
1 réponses
Le problème est avec des barres obliques: votre variable Les contient et la commande finale sera quelque chose comme sed "s/string/path/to/something/g"
, contenant beaucoup trop de barres obliques.
Puisque sed
peut prendre n'importe quel caractère comme délimiteur, vous pouvez essayer d'en utiliser un autre qui n'apparaît pas dans votre chaîne de remplacement:
replacement="/my/path"
sed -e "s@pattern@$replacement@"
Notez que ce n'est pas une preuve de balle: si la chaîne de remplacement contient plus tard @
, elle se cassera pour la même raison, et toute séquence antislash comme \1
sera toujours interprétée en fonction de règles sed.