Re: [#!/fr] Recherche de champs dans un fichier.

Page principale
Supprimer ce message
Répondre à ce message
Auteur: Freenawak
Date:  
À: La liste francophone des scripts shell
Sujet: Re: [#!/fr] Recherche de champs dans un fichier.
Désolé de ne répondre qu'aussi tardivement ... retour de congés ;)

Et bien cette solution

cat LOG_TAMPON | awk -F " +: +" ' BEGIN  {
       short["Machine"] = "LT"
       short["Traitement"] = "TE"
       short["Application"] = "GT"
       short["Environnement"] = "SG"
       i = 0
       order[i] = "Machine"; i++
       order[i] = "Traitement"; i++
       order[i] = "Application"; i++
       order[i] = "Environnement"; i++
}
$1 in short {
       pair[$1] = short[$1] ": " $2
}
END {
    for ( j = 0; j < i; j++ )
    {
       printf( "%s\n", pair[order[1]] )
    }
}'


Me renvoie :

TE: 11mfyTRAENRPP002
TE: 11mfyTRAENRPP002
TE: 11mfyTRAENRPP002
TE: 11mfyTRAENRPP002

Celle ci reste donc sur l'étape TE , je soupçonne la cause du problème au
niveau de la boucle "for" de lecture du tableau imbriqué, sans en être tout
à fait certain ...


Le 23 juillet 2010 21:20, <rikshell@???> a écrit :

> Et avec cette version, il suffit d'ajouter une ligne ayant la même
> structure pour étendre la liste ordonnée.
>
> BEGIN {
>        short["Machine"] = "LT"
>        short["Traitement"] = "TE"
>        short["Application"] = "GT"
>        short["Environnement"] = "SG"
>        i = 0
>        order[i] = "Machine"; ++i
>        order[i] = "Traitement"; ++i
>        order[i] = "Application"; ++i
>        order[i] = "Environnement"; ++i
> }
> $1 in short {
>        pair[$1] = short[$1] ": " $2
> }

>
> END {
>         for (j = 0; j < i; ++j)
>         {
>                printf("%s\n", pair[order[1]])
>        }
> }

>
> Bien à vous
>
>        Richard

>
> On 23 Jul 2010, at 15:27, rikshell@??? wrote:
>
> > Bonjour,
> >
> > Je pensais à quelque chose de cet ordre (en utilisant l'index sous forme
> de variable - i - et l'incrémentation, il suffit de déplacer les lignes
> d'initialisation du tableau "order" pour changer l'ordre d'affichage):
> >
> > BEGIN {
> >       short["Machine"] = "LT"
> >       short["Traitement"] = "TE"
> >       short["Application"] = "GT"
> >       short["Environnement"] = "SG"
> >       i = 0
> >       order[i] = "Machine"; ++i
> >       order[i] = "Traitement"; ++i
> >       order[i] = "Application"; ++i
> >       order[i] = "Environnement"; ++i
> > }

> >
> > $1 in short {
> >       pair[$1] = short[$1] ": " $2
> > }

> >
> > END {
> >       for (i = 0; i < 4; ++i)
> >       {
> >               printf("%s\n", pair[order[1]])
> >       }
> > }

> >
> >       Richard

> >
> > On 23 Jul 2010, at 12:14, Simpsonus wrote:
> >
> >> Voilà une solution (peut être pas la meilleure) :
> >>
> >> cat TON_FICHIER | awk -F ":" '/Machine/ {t[1]="LT :"$2} /Ordonnencement/
> >> {t[2]="Ordo :"$2} /Environnement/ {t[3]="SG :"$2} /Application/
> {t[4]="GT
> >> :"$2} /Traitement/ {t[5]="TE :"$2} END {for (i=0; i < 6; i++) { if
> >> (t[i]){print t[i]}}}'
> >>
> >> plutôt que d'écrire les lignes à chaque test, on renseigne un tableau et
> à
> >> la fin de la lecture de la ligne (END) on écrit le contenu du tableau
> dans
> >> l'ordre croissant des indices.
> >>
> >> A toi de mettre les indexes du tableau t[] dans l'ordre qui te plait,
> >> adapte aussi pour Ordo, je ne sais pas quel mot tu cherches dans ton
> fichier
> >> pour afficher Ordo :. Si tu as d'autres valeurs à tester change aussi le
> i <
> >> 6
> >>
> >>
> >> Je ne suis pas parvenu à une solution plus simple partant de la version
> de
> >> rikshell
> >>
> >> @+
> >> _______________________________________________
> >> archives :
> >> http://listes.patpro.net/list/sshfr.fr.html
> >> http://listes.patpro.net/mailman/listinfo/script_shell_fr
> >
> > _______________________________________________
> > archives :
> > http://listes.patpro.net/list/sshfr.fr.html
> > http://listes.patpro.net/mailman/listinfo/script_shell_fr
>
> _______________________________________________
> archives :
> http://listes.patpro.net/list/sshfr.fr.html
> http://listes.patpro.net/mailman/listinfo/script_shell_fr
>

_______________________________________________
archives :
http://listes.patpro.net/list/sshfr.fr.html
http://listes.patpro.net/mailman/listinfo/script_shell_fr