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 :

Mettre mot entre guillemets en AWK ?


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 155
    Par défaut Mettre mot entre guillemets en AWK ?
    Bonjour;

    Tout est dans l'intitulé.
    Comment faire pour mettre entre guillemets chaques mots d'un fichier ?

    Par exemple :
    truc bidule machin

    devient "truc" "bidule" "machin"


    Merci de votre savoir et aide

  2. #2
    Expert confirmé

    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
    Par défaut
    Salut,

    "sed" me paraît plus adapté pour ce genre de tâche...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ echo -e "truc bidule machin\nchose toto tata"
    truc bidule machin
    chose toto tata
     
    $ echo -e "truc bidule machin\nchose toto tata" | sed 's/[^ ]*/"&"/g'
    "truc" "bidule" "machin"
    "chose" "toto" "tata"
     
    $

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 155
    Par défaut
    Waouh !! Le "&" est assez incroyable

    Mais le souci c'est qu'en fait, je n'ai pas des mots isolés truc puis bidule puis machin mais un string entier "truc bidule machin"....

    Comment faire pour obtenir depuis "truc bidule machin" => "truc" "bidule" "machin" ?

  4. #4
    Expert confirmé

    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
    Par défaut
    Dans quel contexte tu récupères ce "string" ?

    Les solutions doivent être multiples, y compris avec "awk", mais le tout est de connaître le contexte afin d'adapter au mieux la solution...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 155
    Par défaut
    Je fais un "while read ligne do .... done < $FIC_ENTREE"

  6. #6
    Expert confirmé

    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
    Par défaut
    Citation Envoyé par Moostiq Voir le message
    Je fais un "while read ligne do .... done < $FIC_ENTREE"
    Ok, et la $ligne se présente sous quel format ? Du moins où se situe le "string" recherché dans cette ligne ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 155
    Par défaut
    Eh bien, le string est la ligne lue depuis le FIC_ENTREE.
    La "ligne-string" est définie comme celle là :
    "truc bidule machin"
    En fait il me faudrait du substring( ligne, qqchose, qqchose) avec un concat pour rajouter les guillemets sur chaque mot composant ma ligne.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 155
    Par défaut
    OK. C'est bon. Voilà ce que je cherchais en fait...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while read ligne do
                        Premiermot=`echo $ligne | cut -d\  -f1`;
                        Premiermot="\"${Premiermot}\"";
                        ...
                        ligne="${Premiermot} ${Deuxiememot} ... ${Derniermot}";
    done < $FIC_ENTREE
    Et pis c'est tout
    Merci zipe31

  9. #9
    Expert confirmé

    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
    Par défaut
    J'ai rien pigé à ton truc

    Ton script ne correspond en rien à ta demande initiale

    On pourrait avoir un exemple concret d'un bout de ton fichier AVANT TRAITEMENT et APRÈS TRAITEMENT s'il te plaît, merci

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 155
    Par défaut
    Arf!... Je suis dur à comprendre; ça tu ne me le fais pas dire ^^

    En clair, j'avais un fichier d'extraction de données d'un bdd mySQL : FIC_ENTREE
    Dans ce fichier je n'avais qu'une seule ligne (ce que je voulais! [un DISTINCT dans la requete mySQL executée]).
    Au depart je pensais que cette ligne était composée de mots "détachés", mais ton echo ligne | sed ' ' ne me mettait que des guillemets en debut et fin de ligne...

    D'ou le fait que je decoupe la ligne avec cut et que je rajoute des guillemets à chaque mot puis je les concatene tous pour obtenir une ligne avec tous les mots encadrés de guillemets.

    Je suis plus clair ?

  11. #11
    Expert confirmé

    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
    Par défaut
    Citation Envoyé par Moostiq Voir le message
    Je suis plus clair ?
    Oui et non

    La syntaxe de sed donnée plus haut est sensée faire ce que tu veux. Par contre si elle ne le fait pas c'est qu'il y a anguille sous roche

    D'où ma demande d'avoir un exemple concret et non des explications
    Tu es sûr que tes mots sont bien séparés par un espace et non autre chose (j'entends par autre chose, tabulation, espaces répétés, caractères non-imprimables, etc.) ?

    Mais bon si ton script suffit à ton bonheur, tu m'en vois ravi

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 155
    Par défaut
    Bah je ne sais pas tres bien comment MySQL ecrit dans son "tee" (spool)...
    Peut etre que c'etait des tabulations... qui sait ?...

    Encore merci beaucoup pour ton aide

    Mon script me convient parfaitement (clair net et precis )

    Bonne fin de journée. Tcho

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

Discussions similaires

  1. [RegEx] trouver mot entre guillemet
    Par markham dans le forum Langage
    Réponses: 10
    Dernier message: 03/03/2015, 12h21
  2. [RegEx] Extraire mot entre guillemets
    Par mxh77 dans le forum Langage
    Réponses: 5
    Dernier message: 12/06/2014, 19h48
  3. mettre les caractères entre guillemet dans une variable
    Par deltaweb dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/03/2013, 03h15
  4. [RegEx] Trouver les mots entre guillemets
    Par naynay dans le forum Langage
    Réponses: 6
    Dernier message: 20/07/2009, 16h43
  5. mettre variable entre guillemets
    Par domino313131 dans le forum Langage
    Réponses: 1
    Dernier message: 16/06/2009, 16h32

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