Separateur de awk

Résolu
coiaye -  
 coiaye -
Bonjour,

dans la commande awk est-il possible pour extraire une partie d'une ligne de prendre une chaine de caractère comme séparateur (au lieu d'un caractère -F) (la chaine se repete plusieurs fois dans la ligne)

merci
Configuration: Windows XP
Internet Explorer 6.0

8 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Normalement oui ;-))
    0
    1. coiaye
       
      :)
      c'est sympas, aurai tu une idé sur la syntaxe exate car j'ai essayé
      echo "ligne:123 chaine 456 chaine 789 chaine 1011" | awk -F"chaine" '{print $2}'
      mai ça ne prend en compte que le "c" (le debut de "chaine")
      et ça me donne
      haine 456
      alors que je veux
      456

      merci
      0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    C'est toi qui a un problème car :
    $ echo "ligne:123 chaine 456 chaine 789 chaine 1011" | awk -F"chaine" '{print $2}'
     456
    chez moi ça marche bien ;-\
    0
    1. coiaye
       
      ????
      je comprend pas pourqoi ça marche pas pour moi :-S
      sinon ya t'il un moyen avec sed?
      0
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Je ne comprends pas non plus ;-((

    sed n'est pas vraiment fait pour ça...
    0
    1. coiaye
       
      merci kan meme,
      je v essayer de trouver ce qui cloch
      sinon si tu as une proposition d'une autre solution je sui preneur :)
      merci
      0
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Sans grande conviction...
     awk 'BEGIN { FS = "chaine" } { print $2 }'
    ;-\
    0
    1. coiaye
       
      slt
      j'ai déja essayé ça, pareil ça marche pas :-/
      0
    2. coiaye
       
      slt

      j'ai encor une question qui pourai m'aider
      comment je pourai extraire d'une chaine tous les champs séparés par un caractère (":" par exemple) sauf le dernier
      en gro j'ai une chaine "aaa:bbb:ccc:ddd" et je veux extraire "aaa:bbb:ccc" sachant que le nombre de ":" n'est pas le meme a chaque foi
      je sai comment faire le contraire, c a dire extraire just le dernier champ (awk -F":" '{print $NF}') mais g pas reussi a faire ce que je veux


      merci
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Re-

    Là par contre c'est du domaine de "sed" :
    echo "aaa:bbb:ccc:ddd" | sed -n 's/\(.*\):.*/\1/p'
    ;-))
    0
    1. coiaye
       
      ca marche a merveill
      jai regler mon probleme, mais je c tjr pas pourquoi awk -F"chaine" marche pa
      en tt cas merci bcp bcp
      0
  7. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    awk ne peut pas laisser dire ça :-) :
    $ echo aaa:bbb:ccc:ddd | awk 'BEGIN {FS=OFS=":"} ; {NF--;print $0}'
    aaa:bbb:ccc
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      ;-))

      Ben comme t'avais pas pointé ton nez de la journée fallait bien trouver un truc de remplacement, non ?

      Au fait t'as une idée pour son histoire de séparateur (chaine) du début ?

      Bonne soirée.
      0
  8. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    Il faudrait connaitre quelle platforme,quel awk, essayer peut-être
    awk -F"(chaine)" '{print $2}'
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Merci, en espérant qu'il refasse un saut dans le coin ;-))
      0
      1. coiaye > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        je suis là :))

        je vien d'essayer awk -F"(chaine)" '{print $2}' mais ça marche pas
        comment je doi faire pour connaitre quelle platforme et quel awk (curieu seulement, mon probleme est resolu)

        merci
        0
      2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > coiaye
         
        Pour la plateforme, Windows ou GNU/Linux (ou Unixes) ?

        Pour la version "awk --version"
        0
  9. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    hello
    ver
    uname -a
    awk -v
    awk --v
    Si tu es sur Solaris, uiliser nawk
    0
    1. coiaye
       
      (SunOS / windows vers unix via SSH)

      ça marche avec nawk
      c cool
      merci
      0