Supprimer leslignes en double d'un fichier
Résolu/Fermé
Ssylvainsab
Messages postés
2884
Date d'inscription
samedi 29 juillet 2006
Statut
Modérateur
Dernière intervention
15 août 2020
-
17 déc. 2007 à 17:59
samsoul92 - 7 févr. 2015 à 10:06
samsoul92 - 7 févr. 2015 à 10:06
A voir également:
- Supprimer leslignes en double d'un fichier
- Double ecran - Guide
- Fichier rar - Guide
- Whatsapp double sim - Guide
- Supprimer une page word - Guide
- Supprimer compte instagram - Guide
12 réponses
Bourgeois74
Messages postés
9
Date d'inscription
vendredi 13 novembre 2009
Statut
Membre
Dernière intervention
1 mars 2010
28
13 nov. 2009 à 11:55
13 nov. 2009 à 11:55
sorry
j'avais pas fait attention car g suis débutant
donc avec : cat fichier | sort | uniq
cela fonctionne!
j'avais pas fait attention car g suis débutant
donc avec : cat fichier | sort | uniq
cela fonctionne!
je vous donne vite fait un algo pour supprimer les lignes mutiples sans modifier leur ordre initial (scripté en bash mais performant)
il faut copier coller les lignes ci dessous dans un fichier (Je l'ai appelé "vir_ligne_doublon")
un chmod +x dessus.
EN GROS:
je repère les doublons avec les binaire sort et uniq ( super rapidement) et ensuite je filtre chaque ligne une par une avec un filtre qui ne se met a jour qu'avec les lignes en doublon. (Les autres n'ayant pas besoin d'être filtrées)
Utilisation : ./vir_ligne_doublon Fichier_a_épurer
Cela génère un nouveau fichier nommé Fichier_a_épurer.nodoublon
#!/bin/bash
FILE=$1
echo Analyse :
sort $FILE|uniq -c|tee report|awk '$1 > 1'|sed "s/^[^0-9]*\([0-9][0-9]*\) \(.*\)$/Il y a \1 fois: \2/"
echo "Continuer ? (Ou CTRL/C)" ; read A
awk '$1 > 1' report|sed "s/^[^0-9]*[0-9][0-9]* //" > en_doublon
>filtre ; >$FILE.nodoublon
while read LIGNE
do
echo "$LIGNE"|grep -vxf filtre |tee -a $FILE.nodoublon|grep -xf en_doublon >> filtre
done < $FILE
rm en_doublon filtre
echo Nombre de lignes avant et apres
wc -l $FILE*
echo Resultat:
sed "s/^/ /" $FILE.nodoublon
il faut copier coller les lignes ci dessous dans un fichier (Je l'ai appelé "vir_ligne_doublon")
un chmod +x dessus.
EN GROS:
je repère les doublons avec les binaire sort et uniq ( super rapidement) et ensuite je filtre chaque ligne une par une avec un filtre qui ne se met a jour qu'avec les lignes en doublon. (Les autres n'ayant pas besoin d'être filtrées)
Utilisation : ./vir_ligne_doublon Fichier_a_épurer
Cela génère un nouveau fichier nommé Fichier_a_épurer.nodoublon
#!/bin/bash
FILE=$1
echo Analyse :
sort $FILE|uniq -c|tee report|awk '$1 > 1'|sed "s/^[^0-9]*\([0-9][0-9]*\) \(.*\)$/Il y a \1 fois: \2/"
echo "Continuer ? (Ou CTRL/C)" ; read A
awk '$1 > 1' report|sed "s/^[^0-9]*[0-9][0-9]* //" > en_doublon
>filtre ; >$FILE.nodoublon
while read LIGNE
do
echo "$LIGNE"|grep -vxf filtre |tee -a $FILE.nodoublon|grep -xf en_doublon >> filtre
done < $FILE
rm en_doublon filtre
echo Nombre de lignes avant et apres
wc -l $FILE*
echo Resultat:
sed "s/^/ /" $FILE.nodoublon
smed_79
Messages postés
1288
Date d'inscription
dimanche 21 septembre 2008
Statut
Contributeur
Dernière intervention
17 mars 2017
843
19 oct. 2011 à 04:08
19 oct. 2011 à 04:08
plus simple j'ai trouvé ça Delete duplicate lines : http://textop.us/Lines-tools/Delete-Duplicate-Lines
boly38
Messages postés
267
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
29 septembre 2016
80
16 déc. 2013 à 14:30
16 déc. 2013 à 14:30
impossible d'y accéder : "This Account Has Been Suspended" :(
smed_79
Messages postés
1288
Date d'inscription
dimanche 21 septembre 2008
Statut
Contributeur
Dernière intervention
17 mars 2017
843
Modifié par smed_79 le 26/06/2014 à 07:54
Modifié par smed_79 le 26/06/2014 à 07:54
@boly38 Text Mechanic http://textmechanic.com/text-tools/basic-text-tools/remove-duplicate-lines/
spacm
Messages postés
141
Date d'inscription
vendredi 1 juin 2007
Statut
Membre
Dernière intervention
30 août 2016
30
17 déc. 2007 à 18:11
17 déc. 2007 à 18:11
si l'ordre des lignes n'est pas important:
cat fichier | sort | uniq
sinon, perl est mieux pour ça à mon avis
cat fichier | sort | uniq
sinon, perl est mieux pour ça à mon avis
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 894
17 déc. 2007 à 18:13
17 déc. 2007 à 18:13
Salut,
Y-a-t'il la possibilité de trier ton fichier avant ? Si oui :
Y-a-t'il la possibilité de trier ton fichier avant ? Si oui :
sort -u fichier;-))
samsouma4t2
Messages postés
3
Date d'inscription
mercredi 25 novembre 2009
Statut
Membre
Dernière intervention
11 décembre 2010
1
11 déc. 2010 à 09:56
11 déc. 2010 à 09:56
bonjour,
ya pas la même commande (sort -u) sous windows ... j'arrive pas à effacer les doublons .. quand j'essaye avec cette commande il me sort cet erreur (fichier d'entré spécifié deux fois)
ya pas la même commande (sort -u) sous windows ... j'arrive pas à effacer les doublons .. quand j'essaye avec cette commande il me sort cet erreur (fichier d'entré spécifié deux fois)
Ssylvainsab
Messages postés
2884
Date d'inscription
samedi 29 juillet 2006
Statut
Modérateur
Dernière intervention
15 août 2020
825
17 déc. 2007 à 18:17
17 déc. 2007 à 18:17
Trier mon fichier, c'est à dire mettre les lignes identiques les unes après les autres ?
C'est déjà fait ;-)
--
Sylvain
C'est déjà fait ;-)
--
Sylvain
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 894
17 déc. 2007 à 18:20
17 déc. 2007 à 18:20
Alors la solution t'est donnée au-dessus en double ;-))
Ssylvainsab
Messages postés
2884
Date d'inscription
samedi 29 juillet 2006
Statut
Modérateur
Dernière intervention
15 août 2020
825
17 déc. 2007 à 18:34
17 déc. 2007 à 18:34
Merci !
Waow, même avec ce tri, j'ai encore 1000 lignes... ça en fait du code :p
--
Sylvain
Waow, même avec ce tri, j'ai encore 1000 lignes... ça en fait du code :p
--
Sylvain
Bourgeois74
Messages postés
9
Date d'inscription
vendredi 13 novembre 2009
Statut
Membre
Dernière intervention
1 mars 2010
28
13 nov. 2009 à 11:25
13 nov. 2009 à 11:25
bonjour
Dans une liste, stockée dans un fichier texte avec un enregistrement par ligne,j'aimerais écrire un commande qui supprime les doublons
kelkun a t il une idée?
Dans une liste, stockée dans un fichier texte avec un enregistrement par ligne,j'aimerais écrire un commande qui supprime les doublons
kelkun a t il une idée?
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 894
13 nov. 2009 à 11:44
13 nov. 2009 à 11:44
Merci de relire le post et notamment la 1ère réponse !
Bourgeois74
Messages postés
9
Date d'inscription
vendredi 13 novembre 2009
Statut
Membre
Dernière intervention
1 mars 2010
28
13 nov. 2009 à 12:00
13 nov. 2009 à 12:00
Danke!
merci bien!
ça roule
merci bien!
ça roule
13 nov. 2009 à 11:56
3 juin 2011 à 21:18
3 juin 2011 à 21:52
16 déc. 2013 à 14:38