AWK probleme de syntaxe

Bonjour,

j'ai un fichier texte nommer 'range' dans lequel j'ai des lignes qui ressemble a ça

<NOM1>_<DATE1>_<sujet1>_<TYPE1>
<NOM2>_<DATE1>_<sujet1>_<TYPE1>
<NOM3>_<DATE2>_<sujet2>_<TYPE2>
<NOM4>_<DATE2>_<sujet2>_<TYPE2>

ainsi de suite

Je souhaiterais lire les lignes une a une et recuperer les <sujet> afin d'en creer des repertoires
De même pour le TYPE

Je crois que la commande awk peut etre utile mais je n'en comprend que tres mal la syntaxe.

Si vous avez un tuyau je suis preneur

Merci
Configuration: Linux Ubuntu
Firefox 2.0.0.6

3 réponses

  1. On a pour l'instant quelque chose comme ca

    #!/bin/bash
    while read line
    do
    echo $line
    awk -F':' print $2

    done < test_sam_jerem

    Le résultat donne ça:
    sam:test:janvier
    awk: line 1: syntax error at or near print
    jerem:test:fevrier
    awk: line 1: syntax error at or near print
    1. Modérateur
      Salut,

      J'ai peut être une solution, mais avec "sed"...

      J'ai du coller le script sur cette page : http://pastebin.ca/870838 à cause que la mise en page du site (les balises "codes") ne m'affichait pas la syntaxe comme il faut ;-((

      ;-))
      1. Bonjour,

        La commande awk devrait être, me semble-t-il :
        awk -F':' '{print $2}'
        au lieu de
        awk -F':' print $2

        Toutefois, je ne comprends pas comment votre script permet de passer du fichier "range" au résultat que vous obtenez.
        Le champ "sujet" semble se trouver en 3ème position, non en 2ème. Il semble que vous utilisez un fichier intermédiaire.

        À partir du fichier 'range', en considérant que les caractères "<", ">" et "_" sont des séparateurs et que le caractère "_" peut se trouver ailleurs, une solution possible serait :
        cat range.txt | sed s'/>\(_\)</:/g' | awk -F":" '{print $3}' | sort | uniq


        En espérant que cela puisse aider