Awk dédoublonner un print
Résolu
Deep
-
deeper -
deeper -
Bonjour à tous,
J'ai un fichier (TOTO) du type :
OFFRE;CIBLE;TYPE;NOM
12345;111;1;DUPOND
12345;111;1;DURAND
12345;888;1;MARTIN
12345;888;2;MAURICE
23456;444;1;ANDRE
Et je souhaiterais à la fois ne conserver que les 3 premiers champs et dédupliquer ce fichier en même temps
12345;111;1
12345;888;1
12345;888;2
23456;444;1
Mon script est alors :
awk 'print $1, $2, $3, $4' TOTO > TITI
sort -u TITI > TUTU
Seulement le fichier contient environ 1 million de lignes, et l'écriture du fichier TITI est très longue. Alors que si je pouvais à la fois ne conserver que les 3 premiers champs et le dédupliquer, ce serait parfait.
Merci pour votre aide.
Deep
J'ai un fichier (TOTO) du type :
OFFRE;CIBLE;TYPE;NOM
12345;111;1;DUPOND
12345;111;1;DURAND
12345;888;1;MARTIN
12345;888;2;MAURICE
23456;444;1;ANDRE
Et je souhaiterais à la fois ne conserver que les 3 premiers champs et dédupliquer ce fichier en même temps
12345;111;1
12345;888;1
12345;888;2
23456;444;1
Mon script est alors :
awk 'print $1, $2, $3, $4' TOTO > TITI
sort -u TITI > TUTU
Seulement le fichier contient environ 1 million de lignes, et l'écriture du fichier TITI est très longue. Alors que si je pouvais à la fois ne conserver que les 3 premiers champs et le dédupliquer, ce serait parfait.
Merci pour votre aide.
Deep
A voir également:
- Awk dédoublonner un print
- Dedoublonner excel - Guide
- Dédoublonner fichier - Télécharger - Nettoyage
3 réponses
tu veux purger TOTO des doublons ? donc
awk 'BEGIN{FS=OFS=";"} !t[$1, $2, $3]++ {print $1, $2, $3 }' TOTO | tee TITI > TUTU
hello
awk 'BEGIN{FS=OFS=";"} {print $1, $2, $3 > "TITI" ; print $1, $2, $3 > "TUTU" }' TOTOou
awk 'BEGIN{FS=OFS=";"} {print $1, $2, $3 }' TOTO | tee TITI > TUTU
Je m'exprime mal, désolé.
Je disais 2 fichiers car on va :
1) créer un fichier contenant les 3 premières colonnes du fichier d'entrée
2) utiliser le fichier créé avec les 3 colonnes pour le dédoublonner
Je me demandais alors si on ne pouvait pas utiliser un array pour stocker les valeurs de $1 $2 $3, comparer chaque ligne du fichier d'entrée au contenu de ce tableau, et si $1 $2 $3 n'existent pas alors on les stocke dans la variable.
Enfin, on vide la variable dans un fichier
Du coup, on n'aurait l'écriture que d'un fichier.
Je disais 2 fichiers car on va :
1) créer un fichier contenant les 3 premières colonnes du fichier d'entrée
2) utiliser le fichier créé avec les 3 colonnes pour le dédoublonner
Je me demandais alors si on ne pouvait pas utiliser un array pour stocker les valeurs de $1 $2 $3, comparer chaque ligne du fichier d'entrée au contenu de ce tableau, et si $1 $2 $3 n'existent pas alors on les stocke dans la variable.
Enfin, on vide la variable dans un fichier
Du coup, on n'aurait l'écriture que d'un fichier.
C'est rapide et simple.
Merci beaucoup à tous ! Génial !