Supprimer leslignes en double d'un fichier
Résolu
Ssylvainsab
Messages postés
2884
Date d'inscription
Statut
Modérateur
Dernière intervention
-
samsoul92 -
samsoul92 -
A voir également:
- Supprimer leslignes en double d'un fichier
- Double ecran - Guide
- Supprimer rond bleu whatsapp - Guide
- Fichier bin - Guide
- Impossible de supprimer un fichier - Guide
- Comment réduire la taille d'un fichier - Guide
12 réponses
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!
jipicy
Messages postés
40842
Date d'inscription
Statut
Modérateur
Dernière intervention
4 896
Teste et tu verras, c'est le meilleur moyen et le meilleur apprentissage ;-))
erreer
cat fichier | sort -u
zipe31
Messages postés
36402
Date d'inscription
Statut
Contributeur
Dernière intervention
6 430
Hein ?
boly38
Messages postés
267
Date d'inscription
Statut
Membre
Dernière intervention
80
petit complément pour une suppression des doublons en une seule ligne, voici ce que j'ai fait (je passe par un fichier temporaire pour éviter d'effacer le fichier que je suis en train de lire) :
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
plus simple j'ai trouvé ça Delete duplicate lines : http://textop.us/Lines-tools/Delete-Duplicate-Lines
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
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)
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
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?