Je vous embête encore, décidément j'ai un peu de mal avec awk ...qui est
certes bien puissant mais qui a une syntaxe qui me fait tourner
en bourrique :D
Alors le niveau d'exigence à augmenté, maintenant il faut que la sortie se
fasse dans cet ordre précis.
LT:
Ordo:
SG:
GT:
TE:
L'ordre de sorti ne correspond pas du tout à celui ou se présente les
données dans le fichier.
J'ai un bout de truc qui ressemble à ça :
cat LOG_TAMPON | awk -F " +: +" ' BEGIN {
if ($1=="Machine")
{ $_LT=$2 }
if ($1=="Traitement")
{ $_TE=$2)
if ($1=="Application")
{' $_GT=$3 }
etc ...
} '
Ensuite j'affiche mes données dans l'ordre voulu :
echo "LT: $_LT"
echo "Ordo: $_Ordo"
echo "TE: $_TE"
echo "GT: $_GT"
etc ..
Ou plus simplement comment dire à awk de matcher chacune de mes valeurs et
de les coller dans une variable utilisable hors du awk.
(Ca ne match rien du tout mais ça ne plante pas c'est déjà ça ....)
En vous remerciant,
Mathieu, qui s'arrache les cheveux mais qui ne veut pas utiliser perl :p
Le 25 juin 2010 17:15, Simpsonus <simpsonus@???> a écrit :
> Bien vu, c'est la solution la plus propre syntaxiquement et la plus facile
> a faire évoluer.
>
> Le 25 juin 2010 à 15:42, rikshell@??? a écrit :
>
> > Bonjour,
> >
> > Je vous envoie ma proposition:
> > cat TMP_HEAD | awk -F" +: +" 'BEGIN { short["Machine"] = "LT";
> short["Traitement"] = "TE"; short["Application"] = "GT";
> short["Environnement"] = "SG"} $1 in short { printf("%s:%s\n", short[$1],
> $2)}'
> >
> > Bien à vous
> >
> > Richard
> >
> > On 24 Jun 2010, at 18:59, Patrick Proniewski wrote:
> >
> >> Salut,
> >>
> >> On 24 juin 2010, at 16:24, Freenawak wrote:
> >>
> >>> Du coup j'ai une grosse ligne brut du genre :
> >>>
> >>> awk -F ":" '/Machine|Traitement|Application|Environnement/ { print
> $1,":",$2
> >>> } ' | sed 's/Machine/LT/' | sed 's/Traitement/TE/' | sed
> 's/Application/GT/'
> >>> | sed 's/Environnement/SG/'
> >>>
> >>> - ça ne fait pas beaucoup de sed pour rien ?
> >>
> >> oui, effectivement :)
> >>
> >>
> >>> - le formatage ne me plait guère, sed à l'air de gérer les
> >>> espace bizarrement ça me donne :
> >>> LT : s441000
> >>> TE : lenomquivabien
> >>> GT : trucmuche
> >>> SG : tintinleSG
> >>
> >> C'est du au choix du séparateur dans awk, pas à sed.
> >> Je te propose :
> >>
> >> awk -F " *: *" '
> >> /Machine/ { sub("Machine","LT",$1); print $1,":",$2 }
> >> /Traitement/ { sub("Traitement","TE",$1); print $1,":",$2 }
> >> /Application/ { sub("Application","GT",$1); print $1,":",$2 }
> >> /Environnement/ { sub("Environnement","SG",$1); print $1,":",$2 }'
> >>
> >> Il y'a peut être quelque chose de plus court, mais au moins ça
> fonctionne.
> >>
> >> patpro_______________________________________________
> >> 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