Traiter les fichier CSV
sadia
-
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18627 Date d'inscription Statut Contributeur Dernière intervention -
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
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
3 réponses
-
Salut,
Il y a sans doute une solution plus simple et élégante avecawk
, mais en attendant, celle-ci avecsed
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
-
En fait non, elle ne fait pas très bien le job, puisqu'il manque des données à la fin ;-(
Heureusement, ZorroDubcek est arrivé ;-))
-
-
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 -
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