Traiter les fichier CSV

Fermé
sadia - 25 août 2020 à 16:29
dubcek Messages postés 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 - 27 août 2020 à 15:09
Bonjour,

j'ai un fichier file.csv qui contient deux colonnes et plusieurs ligne, et la première colonne contient des valeurs identiques et la 2 contient des valeurs déférentes du coup je voulais bien afficher la valeur de la première colonne puis les 5 valeur de la 2 colonne ainsi de suite par exemple en script shell
C;D
2039489;5374789
2039489;6857797
2039489;7459945
2039489;3682095
2039489;7457929
2039489;5436485
2039489;5469013
2039489;3456739
2039489;4744859
2039489;8698722
2039489;8960700
2039489;6575485

:::::::::::::::::::::::::::::
résultat
2039489=5374789+6857797+7459945+3682095+7457929
2039489=5436485+5469013+3456739+4744859+8698722
2039489=8960700+6575485 et ainsi de suite
merci par avance
A voir également:

3 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
26 août 2020 à 09:32
Salut,

Il y a sans doute une solution plus simple et élégante avec
awk
, mais en attendant, celle-ci avec
sed
fait le job :

$ sed -n 'h;{n;s/.*;//;H;n;s/.*;//;H;n;s/.*;//;H;n;s/.*;//;H;g;s/;/=/;s/\n/+/g;p}' f1
2039489=5374789+6857797+7459945+3682095+7457929
2039489=5436485+5469013+3456739+4744859+8698722

0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
27 août 2020 à 08:12
En fait non, elle ne fait pas très bien le job, puisqu'il manque des données à la fin ;-(

Heureusement, ZorroDubcek est arrivé ;-))
0
dubcek Messages postés 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 5 619
26 août 2020 à 15:13
hello
$ awk -F ";" 'NR>1 {printf $1 "=" $2; for (n=1; n<5; n++){if(getline)printf "+" $2}; print ""}' file.csv
2039489=5374789+6857797+7459945+3682095+7457929
2039489=5436485+5469013+3456739+4744859+8698722
2039489=8960700+6575485
0
dubcek Messages postés 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 5 619
27 août 2020 à 15:09
ou aussi
$ awk -F ";" 'NR==2+n*5 {printf c $1 "=" $2; c=RS ; n++; next} NR>1 {printf "+" $2} END {print ""}' file.csv
2039489=5374789+6857797+7459945+3682095+7457929
2039489=5436485+5469013+3456739+4744859+8698722
2039489=8960700+6575485
0