Script pour trouver les doublons dans un fichier csv

J'ai un 40 MO fichier csv avec les 50 000 enregistrements. Ses un géant de la fiche produit. Chaque ligne a près de 20 champs. [Item#, UPC, Desc, etc]

Comment puis-je,

a) Trouver et Imprimer des lignes en double. [Ce fichier est un grand fichier annexe, j'ai donc plusieurs en-têtes inclus dans le fichier que j'ai besoin de l'enlever, donc je voulais connaître exactement les lignes qui sont en double.]

b) Trouver et Imprimer des lignes en double basé sur une colonne. [Voir si l'UPC est attribuée à plusieurs produits]

J'ai besoin d'exécuter la commande ou le script sur le serveur et j'ai Perl et Python installé. Même script bash ou commande va fonctionner 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 n'obtiens pas la réponse attendue.

Idéalement, j'aimerais que bash script ou une commande, mais si quelqu'un a une autre suggestion, ce serait très bien aussi.

Grâce


Voir: Supprimer les doublons de lignes d'un gros fichier en Python sur un Débordement de Pile

pourquoi n'est-ce pas uniq -d vous donner la réponse attendue?
Vous devriez vous montrer quelques exemples de données (désinfectés si nécessaire), y compris ce que vous considérez être des doublons et non des 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 de l'enregistrement est le même, etc. Vous devriez également vous être plus précis sur ce que "je ne suis pas arriver à la réponse attendue". uniq ne regarde que l'ensemble de la ligne sauf si vous lui dites ignorer la partie de la ligne (mais il n'utilisez pas de virgules comme séparateurs de champ). Aussi, les fichiers CSV peuvent être difficile à traiter avec, sauf si vous utilisez des outils pour objet (par exemple une lib Python).

OriginalL'auteur | 2010-11-04