J'ai un fichier csv de 40 Mo avec 50 000 enregistrements. C'est une liste de produits géante. Chaque rangée a près de 20 champs. [Item #, UPC, Desc, etc.]Script pour trouver des doublons dans un fichier csv
Comment puis-je,
a) Trouver et imprimer des lignes en double. [Ce fichier est un grand fichier ajouté, j'ai donc plusieurs en-têtes inclus dans le fichier que je dois supprimer, donc je voulais connaître les lignes exactes qui sont en double.]
b) Trouver et imprimer des lignes dupliquées en fonction de une colonne. [Voir si un UPC est assigné à plusieurs produits]
J'ai besoin d'exécuter la commande ou le script sur le serveur et j'ai installé Perl et Python. Même bash script ou commande va travailler pour moi aussi.
Je n'ai pas besoin de préserver l'ordre des lignes. etc
J'ai essayé,
sorte largefile.csv | uniq -d
Pour obtenir les doublons, mais je ne reçois pas la réponse attendue.
Idéalement, je voudrais bash script ou commande, mais si quelqu'un a d'autres suggestions, ce serait génial aussi.
Merci
Voir: Remove duplicate rows from a large file in Python sur débordement de la pile
pourquoi 'uniq -d' ne vous donne-t-il pas la réponse attendue? – dogbane
Vous devez afficher quelques exemples de données (nettoyés si nécessaire), y compris ce que vous considérez comme des doublons et des non-doublons. Plus précisément, si le premier champ (item #) est différent, mais le deuxième champ (UPC) est le même ou si l'ensemble du dossier est le même, etc. Vous devriez également être plus précis sur ce que "je ne reçois pas la réponse attendue " veux dire. 'uniq' ne regarde la ligne entière que si vous lui dites d'omettre une partie de la ligne (mais elle n'utilise pas de virgules comme séparateurs de champs). En outre, les fichiers CSV peuvent être difficiles à traiter à moins que vous n'utilisiez des outils conçus à cet effet (par exemple, une librairie Python). –