J'ai un fichier CSV dont je voudrais extraire quelques informations: pour chaque valeur distincte d'une colonne, je voudrais calculer la somme des valeurs correspondantes dans une autre colonne. Finalement, je peux le faire en Python, mais je crois qu'il pourrait y avoir une solution simple en utilisant awk
.Somme conditionnelle Awk d'un fichier CSV
Cela pourrait être le fichier CSV:
2 1:2010-1-bla:bla 1.6
2 2:2010-1-bla:bla 1.1
2 2:2010-1-bla:bla 3.4
2 3:2010-1-bla:bla -1.3
2 3:2010-1-bla:bla 6.0
2 3:2010-1-bla:bla 1.1
2 4:2010-1-bla:bla -1.0
2 5:2010-1-bla:bla 10.9
Je voudrais obtenir:
1 1.6
2 4.5
3 5.8
4 -1.0
5 10.9
Pour l'instant, je ne peux extraire:
a) valeurs de la première colonne:
awk -F ' ' '{print $(2)}' MyFile.csv | awk -F ':' '{print $(1)}'
puis obtenez:
1
2
2
3
3
3
4
5
b) et les valeurs égales, par exemple, 1.1
dans la dernière colonne avec:
awk -F ' ' '{print $(NF)}' MyFile.csv | awk '$1 == 1.1'
puis obtenir:
1.1
1.1
Je ne suis pas en mesure d'extraire simultanément les colonnes qui m'intéressent, ce qui peut m'aider à la fin. Voici un exemple de sortie qui peut faciliter le calcul des sommes (je ne sais pas):
1 1.6
2 1.1
2 3.4
3 -1.3
3 6.0
3 1.1
4 -1.0
5 10.9
Edit: Merci à Elenaher, on pourrait dire l'entrée est le fichier ci-dessus.
pouvez-vous nous donner un exemple d'entrée? – stew
Merci à tous! C'est génial! – Wok