Re: programmation bash traitement de fichier tableau

Page principale

Répondre à ce message
Auteur: Vincent Riquer
Date:  
À: guilde
Sujet: Re: programmation bash traitement de fichier tableau
Johann SUHM a écrit :
> while read ligne

while read valeur1 valeur2
do

>     valeur1="" ; valeur2=""

on vire

>     valeur1=$(echo ${ligne} | cut -d" " -f1)
>     valeur2=$(echo ${ligne} | cut -d" " -f2)

ça aussi

>     echo "${valeur2};${valeur1} >> fichier_tableau.tmp
> done < fichier_de_log

    echo $valeur2,$valeur1
done < fichier_de_log \

| sort -n > fichier_tableau.csv


Tel qu'est son log on n'a pas besoin de quoter (c'est plus long à
parser). Le choix du séparateur ';' est malheureux.

Et attention, sort va faire un tri sur les valeurs ASCII. A priori, on
veut un tri numérique, d'où "sort -n" :
$ while read valeur1 valeur2; do echo $valeur2,$valeur1; done \
| sort

a 2
b 10
c 1

10,b
1,c
2,a

$ while read valeur1 valeur2; do echo $valeur2,$valeur1; done \
| sort -n

a 2
b 10
c 1

1,c
2,a
10,b

Et bien sûr, on ne va pas s'encombrer d'un fichier temporaire :)

> J'ai choisi de faire un cut avec " " (espace) comme séparateur, mais tu
> peux aussi utiliser awk avec print $2 $1


"read" peut recevoir plusieurs noms en paramètre. Si une ligne contient
plus d'éléments qu'il n'y a de paramètres, le dernier reçoit le "surplus".
--
Vincent Riquer

BOFH excuse #441:

Hash table has woodworm