Separateur de awk

Résolu
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. Modérateur
    Salut,

    Normalement oui ;-))
    1. :)
      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
  2. Modérateur
    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 ;-\
    1. ????
      je comprend pas pourqoi ça marche pas pour moi :-S
      sinon ya t'il un moyen avec sed?
  3. Modérateur
    Je ne comprends pas non plus ;-((

    sed n'est pas vraiment fait pour ça...
    1. 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
  4. Modérateur
    Sans grande conviction...
     awk 'BEGIN { FS = "chaine" } { print $2 }'
    ;-\
    1. slt
      j'ai déja essayé ça, pareil ça marche pas :-/
    2. 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
  5. Modérateur
    Re-

    Là par contre c'est du domaine de "sed" :
    echo "aaa:bbb:ccc:ddd" | sed -n 's/\(.*\):.*/\1/p'
    ;-))
    1. 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
  6. Contributeur
    awk ne peut pas laisser dire ça :-) :
    $ echo aaa:bbb:ccc:ddd | awk 'BEGIN {FS=OFS=":"} ; {NF--;print $0}'
    aaa:bbb:ccc
    1. Modérateur
      ;-))

      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.
  7. Contributeur
    Il faudrait connaitre quelle platforme,quel awk, essayer peut-être
    awk -F"(chaine)" '{print $2}'
    1. Modérateur
      Merci, en espérant qu'il refasse un saut dans le coin ;-))
    2. @jipicyje 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
    3. Modérateur
      @coiayePour la plateforme, Windows ou GNU/Linux (ou Unixes) ?

      Pour la version "awk --version"
  8. Contributeur
    hello
    ver
    uname -a
    awk -v
    awk --v
    Si tu es sur Solaris, uiliser nawk
    1. (SunOS / windows vers unix via SSH)

      ça marche avec nawk
      c cool
      merci