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 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.

En 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.

En 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