#1 Le 23/03/2021, à 16:30
- sioup201
Substitution chaine de caractère par url avec la commande sed [résolu]
Bonjour à tous,
Je suis bloqué sur une commande sed.
Mon problème : je souhaite remplacer une chaine de caractère par un url en utilisant la commande sed.
Pour résumer un peu la situation :
- j'ai créé un fichier json qui contient des clés avec des valeurs (fichier1.json):
{
"keyURL1":"http://truc.com"
"keyURL2:"http://machin.com"
"keyEntity1":"Truc"
"keyEntity2":"Machin"
}
- j'ai créé un deuxième fichier json qui contient (fichier2.json):
{
"URL1":"keyURL1"
"URL2":"keyURL2"
"Entity1":"keyEntity1"
"Entity2":"keyEntity2"
}
Objectif : Remplacer keyURL1, keyURL2, keyEntity1 et keyEntity2 du fichier2.json par les valeurs du fichier1.json (http://truc.com, etc)
Mon code :
var1=$(grep -oP '(?<=keyURL1":").*(?=")' fichier1.json #je récupére l'url : http://truc.com
key1=keyURL1
sed -e 's/'$key1'/'$var1'/' fichier2.json
Résultat :
J'obtiens alors une erreur en exécutant la commande sed car je pense que je dois changer l'url1 par : http:\/\/truc.com
Mais je ne sais pas comment je peux le faire.
Je ne voudrai pas le faire à la main car les urls sont assez long et il y en a plusieurs.
Est ce que quelqu'un aurait une solution pour ce problème ?
Je vous remercie de votre aide.
Cordialement,
Dernière modification par sioup201 (Le 23/03/2021, à 20:04)
Hors ligne
#2 Le 23/03/2021, à 17:01
- Watael
Re : Substitution chaine de caractère par url avec la commande sed [résolu]
le JSON se traite avec un parser json : jq, par exemple.
pour sed, les expressions mises en œuvre doivent ne pas contenir le caractère de séparation de sed. ici, /.
on peut plus facilement remplacer ce caractère de séparation par un caractère qui n'apparaît pas dans les expressions.
Dernière modification par Watael (Le 23/03/2021, à 17:01)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 23/03/2021, à 17:16
- Tawal
Re : Substitution chaine de caractère par url avec la commande sed [résolu]
Du genre :
sed -e 's#'$key1'#'$var1'#' fichier2.json
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#4 Le 23/03/2021, à 18:25
- Watael
Re : Substitution chaine de caractère par url avec la commande sed [résolu]
les apostrophes ne sont pas inéluctables :
sed -e "s#$key1#$var1#" fichier2.json
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#5 Le 23/03/2021, à 20:00
- sioup201
Re : Substitution chaine de caractère par url avec la commande sed [résolu]
Merci beaucoup pour toutes vos réponses.
Je viens de tester et ça donne bien le résultat que je voulais.
Hors ligne