J'ai un fichier CSV que je totalise de deux façons: l'une utilisant Excel et l'autre utilisant awk
. Voici les totaux de mes premières 8 colonnes dans Excel:Excel et awk en désaccord sur les totaux CSV
1) 2640502474.00
2) 1272849386284.00
3) 36785.00
4)
5) 107.00
6) 239259.00
7) 0.00
8) 7418570893330.00
Et voici ma awk
sortie:
$ cat /home/jason/import.csv | awk -F "\"*,\"*" '{s+=$1} END {printf("%01.2f\n", s)}'
2640502474.00
$ cat /home/jason/import.csv | awk -F "\"*,\"*" '{s+=$2} END {printf("%01.2f\n", s)}'
1272849386284.00
$ cat /home/jason/import.csv | awk -F "\"*,\"*" '{s+=$8} END {printf("%01.2f\n", s)}'
7411306364347.00
Remarquez comment 1 et 2 correspondre exactement, mais 8 est désactivée par plusieurs millions. Je suppose que le total d'Excel est correct, alors pourquoi est-ce que awk
gère ce fichier différemment?
Vous semblez avoir raison, je pense que j'essaierai ma solution d'une manière différente puisque le consensus semble être que 'awk' est mal adapté à CSV –
Utilisez un langage qui a un module d'analyse de csv, par exemple Perl et Text :: CSV –
GNU Awk 4 est en fait un peu mieux équipé pour traiter wi le CSV compliqué, mais Perl ou Python semblent toujours être des solutions mieux adaptées. – hemflit