Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 07/11/2019, à 20: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. smile

Dernière modification par lynn (Le 07/11/2019, à 21:28)


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#2 Le 07/11/2019, à 20: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, à 20: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... tongue


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne

#4 Le 07/11/2019, à 20: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, à 21: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.

Hors ligne

#6 Le 07/11/2019, à 21:04

diesel

Re : [RÉSOLU] sed : échapper des caractères dans une variable

pingouinux a écrit :

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, à 21: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, à 21: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, à 21:14)

Hors ligne

#8 Le 07/11/2019, à 21: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. smile


«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»

Coluche

Hors ligne