IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Variable avec Sed ne fonctionne pas


Sujet :

Scripts/Batch

  1. #1
    Membre du Club Avatar de Tofdu31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2016
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2016
    Messages : 93
    Points : 69
    Points
    69
    Par défaut Variable avec Sed ne fonctionne pas
    Bonjour / Bonsoir,

    Je suis depuis plus de 4 heures en recherche pour comprendre ce qui ne va pas.

    Alors j'ai un fichier CSV avec les lignes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Ligne A
    Ligne B
    Ligne C
    Ligne D
    Je souhaite y apporter un traitement pour obtenir un fichier au format xml formatté selon mes souhaits.

    Ce fichier xlm possédera toutes les lignes de mon fichier CSV mais avec des instructions avant et après les données fournies par le fichier csv

    J'ai déja effectué un premier travail qui est :

    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Rem mise en place des variables pour creation fichier xml
    set applicationID=ICI LA LIGNE A RAJOUTER AU DEBUT
    set ligne_first=[{\"packageName\":\"%applicationID%\",\"permissions\":[
    set before_permission={"name":"
    set val_after_permission=\",\"value\":\"1\"},
    set val_end_of_last_line=]}]

    Puis dans mon .bat, je vérifie que mes variables sont correctes :
    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo %ligne_first%
    echo %before_permission%
    echo %val_end_of_last_line%

    Enfin, j'ai testé sans variable ma ligne de commande avec un mot TOTO et TATA
    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    %sed% -e "1i%ligne_first%" -e "s/.*/TOTO&/" -e "s/$/TATA,/" fichier_donnee.csv >> Final.xml

    Tout est parfait et le résultat dans Final.xml est bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ICI LA LIGNE A RAJOUTER AU DEBUT
    TOTOLigne ATATA
    TOTOLigne BTATA
    TOTOLigne CTATA
    TOTOLigne DTATA
    Alors le souci, dés que je place ma variable %before_permission% là ça va plus. j'ai une erreur :
    La commande :
    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    %sed% -e "1i%ligne_first%" -e "s/.*/%before_permission%&/" -e "s/$/TATA,/" fichier_donnee.csv >> Final.xml
    Erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed.exe: -e expression n°2, caractère 11: commande `s' inachevée
    Par contre si je replace la première variable utilisé, là ça pose pas de problème...
    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    %sed% -e "1i%ligne_first%" -e "s/.*/%ligne_first%&/" -e "s/$/TATA,/" fichier_donnee.csv >> Final.xml
    Incroyable...

    Bon si quelqu'un peut me filer un coup de pousse.

    Merci à vous

    Tof

  2. #2
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    essaye de doubler les guillemets:

    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    set before_permission={""name"":""


    si ça marche, et si je trouve du temps j'essayerais de t'expliquer

  3. #3
    Membre du Club Avatar de Tofdu31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2016
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2016
    Messages : 93
    Points : 69
    Points
    69
    Par défaut
    Hello,

    Merci pour ton aide,
    Je viens d'essayer une multitude d'option en rapport à l'info que tu m'as donné.

    Déjà merci à toi et aussi, les guillemets sont enfin pris en compte, sauf celui qui est situé après les :.
    Du coup avec ceci une partie fonctionne {"\"name\"":.

    Voici la variable que j'ai mis :
    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    set before_permission={"\"name\"":

    J'ai aussi (vu je sais plus ou) tenté de mettre des guillemets sur l'ensemble de la variable
    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    set "before_permission={"\"name\"":"
    une partie fonctionne aussi.

    Mais impossible de mettre un guillemet après les deux points...

Discussions similaires

  1. [XL-MAC 2016] Enregistrer un fichier (avec Windows OK, avec MAC ne fonctionne pas)
    Par Sergio33600 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/01/2019, 19h49
  2. [Windows 10 Pro]Le ping avec nom ne fonctionne pas !
    Par Artemus24 dans le forum Réseaux
    Réponses: 10
    Dernier message: 23/08/2018, 17h24
  3. Substitution sed ne fonctionne pas avec le caractère &
    Par tisnoopy dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 16/11/2016, 13h56
  4. besoin aide bouton avec effet zoom fonctionne pas.
    Par zicomoun dans le forum Flash
    Réponses: 3
    Dernier message: 13/06/2006, 08h15
  5. Réponses: 16
    Dernier message: 01/02/2006, 19h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo