[awk] agréger des valeurs de plusieurs lignes sur une seule ....
Résolu/Fermé
Swiss Knight
Messages postés
1956
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
27 juillet 2016
-
Modifié par Swiss Knight le 27/07/2016 à 01:07
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 - 27 juil. 2016 à 14:20
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 - 27 juil. 2016 à 14:20
A voir également:
- [awk] agréger des valeurs de plusieurs lignes sur une seule ....
- Comment imprimer un tableau excel sur une seule page - Guide
- Comment aller à la ligne sur excel - Guide
- Fusionner plusieurs feuilles excel en une seule - Guide
- Site de vente en ligne particulier - Guide
- Partage de photos en ligne - Guide
2 réponses
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
27 juil. 2016 à 10:23
27 juil. 2016 à 10:23
hello
$ cat a4.awk
BEGIN {FS=";"; print "CODE;OID;ID;OQTE;QTE;OTYPE;TYPE"}
NR>1 {t[$4]=t[$4] $1 " " $2 " " $9 ", "; t2[$4]=$5 FS $6 FS $7 FS $8}
END {for (n in t){sub(", *$", "", t[n]); print "\"FLW (", t[n] ")\"" FS n FS t2[n]}}
$ awk -f a4.awk foo
CODE;OID;ID;OQTE;QTE;OTYPE;TYPE
"FLW ( 601.901 858.701 194.547, 601.851 832.317 193.733)";982954;0;XTX;50;comment
"FLW ( 603.311 800.928 191.299, 603.512 810.700 191.341, 604.815 802.475 191.393)";982963;0;XTX;49;comment
mamiemando
Messages postés
33378
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
25 novembre 2024
7 802
27 juil. 2016 à 10:03
27 juil. 2016 à 10:03
Bonjour
Le plus simple à mon avis c'est de lire ton fichier ligne par ligne et peupler un ou des dictionnaires :
https://en.wikibooks.org/wiki/An_Awk_Primer/Arrays
... à partir desquels tu réécriras tes agrégats.
Du coup je t'invite à écrire ton code awk dans un fichier et à l'exécuter via
Si tu n'es pas bloqué sur le langage, personnellement je le ferais plutôt en python.
Bonne chance
Le plus simple à mon avis c'est de lire ton fichier ligne par ligne et peupler un ou des dictionnaires :
https://en.wikibooks.org/wiki/An_Awk_Primer/Arrays
... à partir desquels tu réécriras tes agrégats.
Du coup je t'invite à écrire ton code awk dans un fichier et à l'exécuter via
awk -f.
Si tu n'es pas bloqué sur le langage, personnellement je le ferais plutôt en python.
Bonne chance
Modifié par Swiss Knight le 27/07/2016 à 13:24
Par contre j'ai essayé de récupérer les entêtes directement avec les identifiants de champ mais ça ne marche pas, j'ai que des points virgules à part sur le premier champ spécifié manuellement pour la 1ère ligne du fichier :
De plus, je souhaiterais pouvoir ajouter une constante, mettons 0.2 à chaque valeur $NF du fichier initial avant de procéder à ces opérations, est-ce que c'est possible ?
J'ai essayé de remplacer $9 par $9+=0.2 mais ça me met "syntax error"
Modifié par dubcek le 27/07/2016 à 13:29
pour le 3:
ou
point 2
27 juil. 2016 à 14:20
entre temps et ça marche.
Par contre il y a de méchants arrondis (ça coupe après la 3ème décimale) !
Pour le 1er point ce n'est pas grave, c'est moi qui ait mal compris l'organisation de base des données, c'est corrigé.