Bash Scripting

Suppression efficace des lignes dupliquées sous Bash

Spread the love

Supprimer les lignes dupliquées d’un fichier texte est une tâche courante en script Bash. Cet article explore deux méthodes efficaces : l’utilisation de sort et uniq, et l’exploitation de la puissance d’awk.

Table des matières

Utilisation de sort et uniq

Cette approche combine deux utilitaires Unix fondamentaux pour une solution simple. sort trie les lignes alphabétiquement, une condition préalable pour uniq, qui élimine ensuite les doublons consécutifs. L’ordre de la *première* occurrence de chaque ligne est préservé.

Voici la commande :


sort file.txt | uniq > file_unique.txt

Ceci envoie la sortie triée de file.txt à uniq, en enregistrant les lignes uniques dans file_unique.txt. Le fichier original reste inchangé.

Exemple :

Si file.txt contient :


apple
banana
apple
orange
banana
grape

file_unique.txt contiendra :


apple
banana
grape
orange

Utilisation de la commande awk

awk offre une solution plus flexible et puissante, particulièrement utile lorsque la préservation de l’ordre d’origine des lignes est cruciale. Il utilise un tableau associatif pour suivre les lignes rencontrées.

La commande est remarquablement concise :


awk '!seen[$0]++' file.txt > file_unique.txt

Décomposons cela :

  • $0 représente toute la ligne actuelle.
  • seen[$0] accède à un élément du tableau seen, en utilisant la ligne comme clé.
  • ++ incrémente post-fixe la valeur (initialement 0).
  • ! nie le résultat ; la ligne n’est imprimée que si elle est rencontrée pour la première fois (lorsque seen[$0] est 0).

Cette méthode maintient l’ordre d’origine des lignes.

Exemple :

En utilisant le même file.txt, la sortie dans file_unique.txt sera :


apple
banana
orange
grape

Conclusion :

Les deux méthodes suppriment efficacement les lignes dupliquées. sort | uniq est plus simple pour les scénarios de base, tandis qu’awk offre une flexibilité et un contrôle supérieurs, en particulier pour préserver l’ordre d’origine ou gérer des besoins plus complexes de suppression des doublons.

Laisser un commentaire

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