Script pour supprimer les doublons dans un fichier

Dessin laptop avec une loupe où il est écrit "Tuto"

Il s’agit d’un petit script, qui m’est bien utile, que j’avais pompé je ne sais où et que j’avais légèrement modifié à ma sauce.

Je vous le mets plus bas, à vous de le remodifier, améliorer à votre sauce.

echo -n "Entrez le chemin du fichier (ex. /home/user/.bash_history) : "
read fichier
doublons="$(cat $fichier | sort | uniq -d)"
if [ "$doublons" != "" ]; then
for line in $(seq 1 $(echo "$doublons" | wc -l)); do
texteAsuppr=$(echo "$doublons" | sed $line!d)
lignesAsuppr=$(grep -n "$texteAsuppr" $fichier | sed -e 1d -e 's/\([0-9]*\):.*/-e \1d/')
sed $lignesAsuppr -i $fichier
done
fi 
echo "TERMINÉ !"echo

N’oubliez pas de faire un petit « chmod +x » sur le fichier pour le rendre éxecutable.

2 réflexions sur « Script pour supprimer les doublons dans un fichier »

  1. Bonjour Sima, je poursuis ma rando dans le labyrinthe de ton blog.

    Pourquoi ne pas faire un simple :

    sort -u -o fichier.txt fichier.txt

    Je me demande.
    ++

    1. Pour l’exemple sur « .bash_history » en effet la ligne de commande me suffirait, mais pour d’autre fichier, ce script me permet de supprimer les doublons en gardant l’ordre d’origine des lignes (garde la 1ère occurrence à sa place). alors que la ligne de commande supprime les doublons mais trie aussi le fichier par ordre alphabétique (l’ordre d’origine est perdu).

      exemple:
      Fichier de départ :

      banane
      pomme
      cerise
      pomme
      kiwi
      banane
      mangue
      raisin
      kiwi
      fraise

      Résultat avec le script (ordre d’origine conservé) :

      banane
      pomme
      cerise
      kiwi
      mangue
      raisin
      fraise

      Résultat avec sort -u (trié alphabétiquement) :

      banane
      cerise
      fraise
      kiwi
      mangue
      pomme
      raisin

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *