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. 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
    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. 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