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