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] Ne pas interpréter l'apostrophe


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 428
    Points : 60
    Points
    60
    Par défaut [awk] Ne pas interpréter l'apostrophe
    Bonjour;

    J'ai la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cat /tmp/export-option_name.csv \
     | awk '!/^\n/ {print "UPDATE dq_options SET option_value ="$0" WHERE option_name = 'authentication_options';"}' \
     | mysql -u $SGBD_LOGIN -p$SGBD_PASSWORD -h $SGBD_ADDRESS -D $SGBD_DATABASE
    La commande lit une valeur dans un fichier CSV et contruit une requête SQL UPDATE et ensuite l'exécute mais j'ai une erreur : la colonne "authentication_options" n'ai pas reconnue car la commande AWK me supprime les 2 cotes : j'ai ceci authentication_options au lieu de 'authentication_options'

    Ma question : Comment faire pour garder les 2 côtes et que AWK ne les enlévent pas ?

    Merci

  2. #2
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    c'est quoi les "cotes" ?
    une cote de boeuf ? une cote de maille ? la cote d'armor ? les côtés ? les quotes ? (et si oui, lesquelles ?)

  3. #3
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Bonjour

    La solution est de sortir, écrire le caractère et rentrer.
    Pour faire ceci, on écrit:
    Ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cat /tmp/export-option_name.csv \
    | awk '!/^\n/ {print "UPDATE dq_options SET option_value ="$0" WHERE option_name = '\''authentication_options'\'';"}' \
    | mysql -u $SGBD_LOGIN -p$SGBD_PASSWORD -h $SGBD_ADDRESS -D $SGBD_DATABASE
    Un exemple direct:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ awk 'BEGIN{print "maman va au 'marché'";}' fichier
    maman va au marché
    $ awk 'BEGIN{print "maman va au '\''marché'\''";}' fichier
    maman va au 'marché'
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  4. #4
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 286
    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 286
    Points : 12 742
    Points
    12 742
    Par défaut
    Bonjour,

    Une autre solution est d'utiliser la représentation octal par exemple du "'":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ awk 'BEGIN{print "maman va au \047marché\047";}' fichier
    maman va au 'marché'
    A première vue, cela semple moins beau que la solution de Flodelarab mais on évite les bug de script à cause d'un quote mal fermé...

    Après, c'est à chacun de choisir.
    Cordialement.

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    j'en rajoute une (ça devrait faire le compte) : en utilisant une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -v apo="'" 'BEGIN{print "voici "apo"la"apo" solution"}'
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 286
    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 286
    Points : 12 742
    Points
    12 742
    Par défaut
    En fait, il en manque encore une et on aura au moins fait le tour de toutes les solutions du manuel gawk :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ awk "BEGIN{print \"maman va au 'marché'\";}" fichier
    maman va au 'marché'
    Cordialement.

  7. #7
    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
    Il y a aussi cette solution (il faut bien compter les enchainements de caractères)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ awk 'BEGIN{print "maman va au '"'"'marché'"'"'";}' fichier
    maman va au 'marché'
    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.

  8. #8
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,
    Citation Envoyé par al1_24 Voir le message
    Il y a aussi cette solution (il faut bien compter les enchainements de caractères)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ awk 'BEGIN{print "maman va au '"'"'marché'"'"'";}' fichier
    maman va au 'marché'
    T'en as de trop

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ awk 'BEGIN{print "maman va au '"'marché'"'";}'
    maman va au 'marché'
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  9. #9
    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
    Citation Envoyé par zipe31 Voir le message
    T'en as de trop
    J'aurais plutôt dit : On peut faire avec moins
    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.

  10. #10
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 286
    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 286
    Points : 12 742
    Points
    12 742
    Par défaut
    Et pourquoi pas une syntaxe directe sans chichi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ awk -f - <<FIN fichier
    BEGIN{print "maman va au 'marché'";}
    FIN
    maman va au 'marché'
    Car dans les faits, ce n'est pas awk qui pose problème, c'est le shell...

    En plus, le passage de variable peut se simplifier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ TOTO=supermarché
    $ awk -f - <<FIN
    BEGIN{print "maman va au '$TOTO'";}
    FIN
    maman va au 'supermarché'
    Cordialement.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 428
    Points : 60
    Points
    60
    Par défaut
    OK merci tout le monde.

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

Discussions similaires

  1. fichier qui ne se supprime pas car utilisé par un processus
    Par icicmoi dans le forum Windows Forms
    Réponses: 5
    Dernier message: 01/04/2008, 15h16
  2. Réponses: 5
    Dernier message: 14/04/2007, 18h47
  3. Ne PAS interpreter le php
    Par Syntax-ERROR dans le forum Langage
    Réponses: 10
    Dernier message: 04/12/2005, 18h45
  4. [Image]EZPDF - ezImage pas plus d'une image par PDF ?
    Par Huntress dans le forum Bibliothèques et frameworks
    Réponses: 19
    Dernier message: 29/11/2005, 17h36
  5. [XSL][re] Ecrire des balise qui ne seront pas interpretées
    Par FrRoulio dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 17/03/2004, 12h32

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