#1 Le 07/11/2019, à 19:04
- lynn
[RÉSOLU] sed : échapper des caractères dans une variable
Bonjour,
Contexte :
Utilisation d'une variable password afin de remplir un document nommé file en utilisant la commande sed.
Ce que je fais :
read -s password
le mot de passe que je tapes : mot_de_&_passe
Le contenu du document file :
Début de fichier
Fin de fichier
La commande avec sed :
sed "$ s/$/\n\npassword=$password/" file
Le document file modifié :
Début de fichier
Fin de fichier
password=le_mot_de__passe
Le caractère '&' n'apparaît pas...
Comment faire en sorte que tous les caractères de même type que '&' soient affichés ? Merci pour vos lumières.
Dernière modification par lynn (Le 07/11/2019, à 20:28)
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#2 Le 07/11/2019, à 19:44
- pingouinux
Re : [RÉSOLU] sed : échapper des caractères dans une variable
Bonsoir,
Il faut que tu tapes le mot de passe ainsi :
le_mot_de_\\&_passe
Sinon, le & est remplacé par l'expression trouvée, qui est ici une chaîne vide.
Hors ligne
#3 Le 07/11/2019, à 19:50
- lynn
Re : [RÉSOLU] sed : échapper des caractères dans une variable
Bonjour pingouinux,
Merci pour ta réponse.
Néanmoins, y a-t-il un moyen de le faire automatiquement si le caractère concerné est trouvé ? Il y a des mots de passe dont je ne sais rien qui sont fait de trente à quarante caractères alors j'aimerais éviter d'avoir à les tripatouiller un par un...
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#4 Le 07/11/2019, à 19:52
- kamaris
Re : [RÉSOLU] sed : échapper des caractères dans une variable
Il faut que tu protèges les caractères spéciaux dans le sed, du genre :
sed "$ s/$/\n\npassword=${password//&/\\&}/" file
Hors ligne
#5 Le 07/11/2019, à 20:00
- Watael
Re : [RÉSOLU] sed : échapper des caractères dans une variable
sed '$amot de passe: '"$mot2passe" fichier
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#6 Le 07/11/2019, à 20:04
- diesel
Re : [RÉSOLU] sed : échapper des caractères dans une variable
Bonsoir,
Il faut que tu tapes le mot de passe ainsi :le_mot_de_\\&_passe
Sinon, le & est remplacé par l'expression trouvée, qui est ici une chaîne vide.
Pourquoi ?
jean-marie@jean-marie:~$ read -s password
jean-marie@jean-marie:~$ echo $password
mot_de_&_passe
jean-marie@jean-marie:~$
Je pense que la bonne solution est celle de Kamaris.
Amicalement.
Jean-Marie
Dernière modification par diesel (Le 07/11/2019, à 20:06)
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#7 Le 07/11/2019, à 20:14
- pingouinux
Re : [RÉSOLU] sed : échapper des caractères dans une variable
@diesel83140 #6 :
Ce que j'ai voulu dire : c'est le sed qui remplace le &, pas le read.
Dernière modification par pingouinux (Le 07/11/2019, à 20:14)
Hors ligne
#8 Le 07/11/2019, à 20:27
- lynn
Re : [RÉSOLU] sed : échapper des caractères dans une variable
Bonsoir et merci pour vos suggestions kamaris, diesel83140 et Watael.
J'ai retenu la méthode proposée par Watael qui ne nécessite pas de spécifier le caractère que l'on souhaite échapper.
Merci à vous tous.
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne