Comment utiliser, dans un script sh, des variables créées dans un script gawk
Fermé
zigroful
Messages postés
20
Date d'inscription
dimanche 16 février 2020
Statut
Membre
Dernière intervention
29 août 2023
-
Modifié le 16 févr. 2020 à 18:04
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 17 févr. 2020 à 07:49
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 17 févr. 2020 à 07:49
A voir également:
- Comment utiliser, dans un script sh, des variables créées dans un script gawk
- Script vidéo youtube - Guide
- Comment utiliser un chromecast - Guide
- Microsoft activation script - Accueil - Windows
- Script bat - Guide
- Comment utiliser l'ia - Accueil - Guide Intelligence artificielle
3 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
16 févr. 2020 à 18:18
16 févr. 2020 à 18:18
Salut,
awk peut faire cela tout seul comme un grand ;-))
awk peut faire cela tout seul comme un grand ;-))
$ cat f1
1; a1 ; 3.2
2; a2 ; 5.36
3; a1 ; 18.4
4; a4 ; 2.6
5; a2 ; 4.32
6; a7 ; 12.7
7; a19 ; 45
8; a3 ; 42
$ awk -F";" '{array[$2]+=$3}END{for (name in array) {print "TotalPartiel_"name," = ", array[name]}}' f1
TotalPartiel_ a1 = 21.6
TotalPartiel_ a19 = 45
TotalPartiel_ a2 = 9.68
TotalPartiel_ a3 = 42
TotalPartiel_ a4 = 2.6
TotalPartiel_ a7 = 12.7
zigroful
Messages postés
20
Date d'inscription
dimanche 16 février 2020
Statut
Membre
Dernière intervention
29 août 2023
16 févr. 2020 à 18:20
16 févr. 2020 à 18:20
Merci zip31 mais comment faire le total des totaux partiels ?
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
16 févr. 2020 à 18:29
16 févr. 2020 à 18:29
$ awk -F";" '{array[$2]+=$3;sum+=$3}END{for (name in array) {print "TotalPartiel_"name," = ", array[name]} {print "Total = ",sum}}' f1
TotalPartiel_ a1 = 21.6
TotalPartiel_ a19 = 45
TotalPartiel_ a2 = 9.68
TotalPartiel_ a3 = 42
TotalPartiel_ a4 = 2.6
TotalPartiel_ a7 = 12.7
Total = 133.58
zigroful
Messages postés
20
Date d'inscription
dimanche 16 février 2020
Statut
Membre
Dernière intervention
29 août 2023
>
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
16 févr. 2020 à 19:07
16 févr. 2020 à 19:07
Bonjour zipe31,
la commande {print "Total = ",sum} que je viens d'expérimenter
ne fonctionne pas, chez moi. J'ai toujours Total=0
la commande {print "Total = ",sum} que je viens d'expérimenter
ne fonctionne pas, chez moi. J'ai toujours Total=0
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
>
zigroful
Messages postés
20
Date d'inscription
dimanche 16 février 2020
Statut
Membre
Dernière intervention
29 août 2023
16 févr. 2020 à 19:16
16 févr. 2020 à 19:16
sum est déclarée ?
zigroful
Messages postés
20
Date d'inscription
dimanche 16 février 2020
Statut
Membre
Dernière intervention
29 août 2023
>
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
16 févr. 2020 à 19:53
16 févr. 2020 à 19:53
Oui je l'ai déclarée avec declare sum avant d'appliquer awk dans mon script sh
zigroful
Messages postés
20
Date d'inscription
dimanche 16 février 2020
Statut
Membre
Dernière intervention
29 août 2023
16 févr. 2020 à 18:52
16 févr. 2020 à 18:52
Encore une fois merci beaucoup pour votre réactivité
Cependant, j'ai voulu, dans ma question, simplifier pour ne pas alourdir le texte.
En fait, les a1, a2 a3, etc... qui sont des expressions alphanumériques représentant des patterns complexes de plusieurs lignes du genre b1\|b2\|b3\|...\|bn chacun des b étant lui-même composé de plusieurs mots. Les mettre en indice de TotalPartiel_ comme vous le proposez, rendrait les sorties illisibles.
Pour pallier à ce défaut, et pour me permettre de faire évoluer mes patterns, j'ai imaginé les regrouper dans un tableau que j'ai appelé var[i], ce qui me permet au fur et à mesure que j'avance dans la lecture de mon fichier d'entrée, d'enrichir les patterns de manière à regrouper, de plus en plus, les lignes correspondantes.
Auriez-vous une solution pour ce genre de problème ?
Me suis-je fait bien comprendre ?
Cependant, j'ai voulu, dans ma question, simplifier pour ne pas alourdir le texte.
En fait, les a1, a2 a3, etc... qui sont des expressions alphanumériques représentant des patterns complexes de plusieurs lignes du genre b1\|b2\|b3\|...\|bn chacun des b étant lui-même composé de plusieurs mots. Les mettre en indice de TotalPartiel_ comme vous le proposez, rendrait les sorties illisibles.
Pour pallier à ce défaut, et pour me permettre de faire évoluer mes patterns, j'ai imaginé les regrouper dans un tableau que j'ai appelé var[i], ce qui me permet au fur et à mesure que j'avance dans la lecture de mon fichier d'entrée, d'enrichir les patterns de manière à regrouper, de plus en plus, les lignes correspondantes.
Auriez-vous une solution pour ce genre de problème ?
Me suis-je fait bien comprendre ?
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
16 févr. 2020 à 19:17
16 févr. 2020 à 19:17
Pour pouvoir aider on ne peut pas se satisfaire d'approximation ;-(
zigroful
Messages postés
20
Date d'inscription
dimanche 16 février 2020
Statut
Membre
Dernière intervention
29 août 2023
>
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
16 févr. 2020 à 19:50
16 févr. 2020 à 19:50
Vous avez raison. Disons, pour faire court, que les patterns sont des éléments d'un tableau unidimensionnel du type var[1]="a1"
var[2]="a2"
var[3]="a3"
etc...
var[2]="a2"
var[3]="a3"
etc...
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
>
zigroful
Messages postés
20
Date d'inscription
dimanche 16 février 2020
Statut
Membre
Dernière intervention
29 août 2023
17 févr. 2020 à 07:49
17 févr. 2020 à 07:49
Non, ce que je voulais dire, c'est qu'on a besoin d'avoir un exemple concret, AVANT => APRÈS, avec le vrai schéma correspondant à tes données (en modifiant les vraies données si celles-ci sont sensibles).
Chaque fois qu'on nous donne des exemples basiques, on se casse le luc à donner des solutions qu'on doit adapter (quand il ne faut pas tout refaire), parce que les exemples sont loin de la réalité.
Pour ton cas, je persiste à croire que tu n'as besoin que de awk pour faire ce que tu veux !
Chaque fois qu'on nous donne des exemples basiques, on se casse le luc à donner des solutions qu'on doit adapter (quand il ne faut pas tout refaire), parce que les exemples sont loin de la réalité.
Pour ton cas, je persiste à croire que tu n'as besoin que de awk pour faire ce que tu veux !