Suppression des lignes en double d’un fichier texte à l’aide de la ligne de commande Linux
La suppression des lignes en double d’un fichier texte peut être effectuée à partir de la ligne de commande Linux. Une telle tâche peut être plus courante et nécessaire que vous ne le pensez. Le scénario le plus courant où cela peut être utile est celui des fichiers journaux. Souvent, les fichiers journaux répètent les mêmes informations encore et encore, ce qui rend le fichier presque impossible à passer au crible, ce qui rend parfois les journaux inutiles.
Dans ce guide, nous allons montrer divers exemples de ligne de commande que vous pouvez utiliser pour supprimer les lignes en double d’un fichier texte. Essayez certaines des commandes sur votre propre système et utilisez celle qui convient le mieux à votre scénario.
Dans ce tutoriel, vous allez apprendre :
- Comment supprimer les lignes en double d’un fichier lors du tri
- Comment compter le nombre de lignes en double dans un fichier
- Comment supprimer les lignes en double sans trier le fichier
Divers exemples pour supprimer les lignes en double d’un fichier texte sous Linux
Supprimer les lignes en double du fichier texte
Ces exemples fonctionneront sur n’importe quelle distribution Linux, à condition que vous utilisiez le shell Bash.
Pour notre exemple de scénario, nous allons travailler avec le fichier suivant, qui contient uniquement les noms de différentes distributions Linux. Il s’agit d’un fichier texte très simple à titre d’exemple, mais en réalité, vous pouvez utiliser ces méthodes sur des documents contenant même des milliers de lignes de répétition. Nous allons voir comment supprimer tous les doublons de ce fichier à l’aide des exemples ci-dessous.
cat distros.txt
Ubuntu
CentOS
Debian
Ubuntu
Fedora
Debian
openSUSE
openSUSE
Debian
La commande
uniqest capable d’isoler toutes les lignes uniques de notre fichier, mais cela ne fonctionne que si les lignes dupliquées sont adjacentes les unes aux autres. Pour que les lignes soient adjacentes, elles doivent d’abord être classées par ordre alphabétique. La commande suivante fonctionnerait à l’aidede sortetuniq.sort distros.txt | uniq CentOS Debian Fedora openSUSE UbuntuPour faciliter les choses, nous pouvons simplement utiliser
l’option -uavec sort pour obtenir le même résultat exact, au lieu de passer à uniq.
sort -u distros.txt CentOS Debian Fedora openSUSE UbuntuPour voir combien d’occurrences de chaque ligne se trouve dans le fichier, nous pouvons utiliser l’option
-c(count) avec uniq.sort distros.txt | uniq -c 1 CentOS 3 Debian 1 Fedora 2 openSUSE 2 UbuntuPour voir les lignes qui se répètent le plus souvent, nous pouvons diriger vers une autre commande de tri avec les options
-n(tri numérique) et-rinverse. Cela nous permet de voir rapidement quelles lignes sont les plus dupliquées dans le fichier - une autre option pratique pour passer au crible les journaux.sort distros.txt | uniq -c | sort -nr 3 Debian 2 Ubuntu 2 openSUSE 1 Fedora 1 CentOSUn problème avec l’utilisation des commandes précédentes est que nous nous appuyons sur
sort. Cela signifie que notre sortie finale est triée par ordre alphabétique, ou triée par nombre de répétitions comme dans l’exemple précédent. Cela peut parfois être une bonne chose, mais que se passe-t-il si nous avons besoin que le fichier texte conserve son ordre précédent ? Nous pouvons éliminer les lignes en double sans trier le fichier en utilisant la commandeawkdans la syntaxe suivante.awk '!seen[$0]++' distros.txt Ubuntu CentOS Debian Fedora openSUSEAvec cette commande, la première occurrence d’une ligne est conservée et les futures lignes dupliquées sont supprimées de la sortie.
Les exemples précédents enverront la sortie directement à votre terminal. Si vous souhaitez un nouveau fichier texte avec vos lignes en double filtrées, vous pouvez adapter n’importe lequel de ces exemples en utilisant simplement l’opérateur
>bash comme dans la commande suivante.awk '!seen[$0]++' distros.txt > distros-new.txt
Il doit s’agir de toutes les commandes dont vous avez besoin pour supprimer les lignes en double d’un fichier, tout en triant ou en comptant les lignes. Il existe d’autres méthodes, mais celles-ci sont les plus faciles à utiliser et à retenir.
Réflexions finales
Dans ce guide, nous avons vu divers exemples de commande pour supprimer les lignes en double d’un fichier texte sous Linux. Vous pouvez appliquer ces commandes à des fichiers journaux ou à tout autre type de fichier texte brut comportant des lignes en double. Nous avons également appris à trier les lignes d’un fichier texte ou à compter le nombre de doublons, car cela peut parfois accélérer l’isolation des informations dont nous avons besoin à partir d’un document.
