#1 Le 18/10/2016, à 17:35
- karamelo
[Résolu]supprimer doublon et deplacer valeur csv
Bonjour une petite question encore avec les csv maudits , j'ai encore un fichier de ce type:
A,B
201500030713,1
201500030713,3
201500030713,1
201500030713,1
201500030713,1
201500030714,3
201500030714,3
201500030715,3
201500030716,3
201500030716,1
201500030716,1
la valeur 2015000xxx est en double, je souhaite sortir les doubles de la valeur A et déplacer vers B avec comme séparateur -
Exemple de sortie:
A,B
201500030713,1-3-1-1-1,
201500030714,3-3,
201500030715,3,
201500030716,3-1-1,
il y a t'il un moyen avec uniq et sed de le faire ?
Dernière modification par karamelo (Le 19/10/2016, à 07:42)
Hors ligne
#2 Le 18/10/2016, à 19:19
- Hizoka
Re : [Résolu]supprimer doublon et deplacer valeur csv
Salut, c'est pas vraiment ce que tu veux mais avec python3 :
dico = {}
with open("FILE", "r") as Contenu:
for Ligne in Contenu:
a, b = Ligne.split(",")
if a in dico.keys():
dico[a].append(b.strip())
else:
dico[a] = [b.strip()]
for a, b in dico.items():
print("{}, {},".format(a, "-".join(b)))
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#3 Le 18/10/2016, à 20:19
- Compte anonymisé
Re : [Résolu]supprimer doublon et deplacer valeur csv
Je propose ce script avec sed et uniq.
#!/bin/bash
for a in $(sed 's/,.*$//' "$1"|uniq)
do liste2=$(sed -n '/^'"$a"',/s/^.*,//p' "$1")
echo $a,$(sed 's/ /-/g' <<< $liste2),
done
usage :
script nomdufichier
#4 Le 19/10/2016, à 01:18
- Watael
Re : [Résolu]supprimer doublon et deplacer valeur csv
salut,
à la va-vite en awk :
$ awk 'BEGIN{FS=OFS=","}{if($1 in ar)ar[$1]=ar[$1]"-"$2; else ar[$1]=$2}END{for (i in ar)print i,ar[i]}' tonFichier
as-tu besoin de la virgule finale, car elle indique un dernier champ vide ?
Dernière modification par Watael (Le 19/10/2016, à 01:18)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#5 Le 19/10/2016, à 07:41
- karamelo
Re : [Résolu]supprimer doublon et deplacer valeur csv
Wahooo super doute vos solutions me vont parfaitement, merci à tous.
Solved
Hors ligne