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

Shell et commandes GNU Discussion :

awk ou sed : Supprimer argument entre doubles quotes sur une ligne de fichier


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Homme Profil pro
    Chef de projet sur HPC
    Inscrit en
    Août 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet sur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 27
    Points : 19
    Points
    19
    Par défaut awk ou sed : Supprimer argument entre doubles quotes sur une ligne de fichier
    Bonjour à tous,

    Je galère depuis ce matin sur un problème (que je pensais...) tout bête

    Soit un fichier texte avec notamment ces 2 lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    init("C:\mon\chemin1", "tyconres.xml", True)
    setModelFile("C:\mon\chemin2")
    je voudrais arriver à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    init("", "tyconres.xml", True)
    setModelFile("")
    Pour la ligne setModelFile, je pensais utiliser un simple sed du genre remplacer la ligne setModelFile par setModelFile(""), mais j'arrive à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setModelFile()("C:\mon\chemin2")
    Quant à la ligne init, je tente avec awk d'utiliser la double quote comme séparateur puis de concaténer mais je me retrouve avec des double quotes sur toutes les lignes !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cat results.py | awk -v FS="\"" '{
       print $1 "\"" "\"" $3;
    }'
    Auriez vous une piste pour traiter ces 2 lignes simplement en shell et/ou awk ?

    Déja un sed pour remplacer toute la ligne me suffirait, genre init("C:\mon\chemin1", "tyconres.xml", True) => init("", "tyconres.xml", True)

    Merci par avance.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo 'init("C:\mon\chemin1", "tyconres.xml", True)
    setModelFile("C:\mon\chemin2")' | sed 's/"[^"]*"/""/'
    retourne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    init("", "tyconres.xml", True)
    setModelFile("")
    Est-ce que ce la correspond ton besoin ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Chef de projet sur HPC
    Inscrit en
    Août 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet sur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    Ca marche super, un grand merci !

    J'ai oublié de préciser que j'ai d'autres lignes (ex : setUUIDE (16, "3DE71C341824-000038AE-504D4F5431-01")) que je ne veux pas modifier.

    Il faudrait donc que j'ajoute une condition sur le sed pour ne traiter que les 2 lignes mentionnées précédemment...

    Je vais chercher encore un peu, donnez moi la solution demain

  4. #4
    Membre à l'essai
    Homme Profil pro
    Chef de projet sur HPC
    Inscrit en
    Août 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet sur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    Solution mais en 2 lignes :

    cat results.py | sed '/init|setModelFile/s/"[^"]*"/""/'

    cat results.py | sed '/setModelFile/s/"[^"]*"/""/'

    Presque réussi

    EDIT : cat results.py | sed '/init/s/"[^"]*"/""/;/setModelFile/s/"[^"]*"/""/'

  5. #5
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 278
    Points : 12 726
    Points
    12 726
    Par défaut
    Bonjour,
    Citation Envoyé par SuperJoker Voir le message
    Solution mais en 2 lignes :

    cat results.py | sed '/init|setModelFile/s/"[^"]*"/""/'
    Celle-ci était presque la bonne en fait, il manquait juste un "\" pour protéger le "|":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat results.py | sed '/init\|setModelFile/s/"[^"]*"/""/'
    Cordialement.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Chef de projet sur HPC
    Inscrit en
    Août 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet sur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Bonjour,

    Celle-ci était presque la bonne en fait, il manquait juste un "\" pour protéger le "|":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat results.py | sed '/init\|setModelFile/s/"[^"]*"/""/'
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. IceFaces : double clic sur une ligne dans une table
    Par sebastiens57 dans le forum JSF
    Réponses: 4
    Dernier message: 13/11/2008, 10h55
  2. [JTable] Repérer un double clic sur une ligne
    Par nolofinwe dans le forum Composants
    Réponses: 2
    Dernier message: 28/05/2008, 15h53
  3. Chaînes entre double quotes
    Par ybruant dans le forum Langage
    Réponses: 6
    Dernier message: 25/03/2008, 14h46
  4. Evenement double click sur une ligne d'un DataGrid
    Par imad_eddine dans le forum ASP.NET
    Réponses: 7
    Dernier message: 19/11/2007, 17h24
  5. [Système] Supprimer double quotes d'une chaine
    Par chienlou dans le forum Langage
    Réponses: 15
    Dernier message: 24/05/2006, 14h29

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