Comment trouver des données en double dans un fichier texte Linux avec uniq

Comment trouver des données en double dans un fichier texte Linux avec uniq

Avez-vous déjà rencontré des fichiers texte avec des lignes répétées et des mots en double ? Peut-être que vous travaillez régulièrement avec des sorties de commandes et que vous souhaitez les filtrer pour des chaînes distinctes. En ce qui concerne les fichiers texte et la suppression des données redondantes sous Linux, la commande uniq est votre meilleur choix.





Dans cet article, nous aborderons en détail la commande uniq, ainsi qu'un guide détaillé sur l'utilisation de la commande pour supprimer les lignes en double d'un fichier texte.





Qu'est-ce que la commande uniq ?

La commande uniq sous Linux est utilisée pour afficher des lignes identiques dans un fichier texte. Cette commande peut être utile si vous souhaitez supprimer des mots ou des chaînes en double d'un fichier texte. Étant donné que la commande uniq correspond aux lignes adjacentes pour rechercher des copies redondantes, elle ne fonctionne qu'avec des fichiers texte triés.





Heureusement, vous pouvez canaliser le sorte commande avec uniq pour organiser le fichier texte d'une manière compatible avec la commande. En plus d'afficher des lignes répétées, la commande uniq peut également compter l'occurrence de lignes en double dans un fichier texte.

Comment utiliser la commande uniq

Il existe différentes options et indicateurs que vous pouvez utiliser avec uniq. Certains d'entre eux sont basiques et effectuent des opérations simples telles que l'impression de lignes répétées, tandis que d'autres sont destinés aux utilisateurs avancés qui travaillent fréquemment avec des fichiers texte sous Linux.



Syntaxe de base

La syntaxe de base de la commande uniq est :

uniq option input output

...où option est le drapeau utilisé pour invoquer des méthodes spécifiques de la commande, saisir est le fichier texte à traiter, et sortir est le chemin du fichier qui stockera la sortie.





Les sortir L'argument est facultatif et peut être ignoré. Si un utilisateur ne spécifie pas le fichier d'entrée, uniq prend les données de la sortie standard comme entrée. Cela permet à un utilisateur de canaliser uniq avec autres commandes Linux .

Exemple de fichier texte

Nous utiliserons le fichier texte duplicate.txt comme entrée de la commande.





127.0.0.1 TCP
127.0.0.1 UDP
Do catch this
DO CATCH THIS
Don't match this
Don't catch this
This is a text file.
This is a text file.
THIS IS A TEXT FILE.
Unique lines are really rare.

Notez que nous avons déjà trié ce fichier texte en utilisant le sorte commander. Si vous travaillez avec un autre fichier texte, vous pouvez le trier à l'aide de la commande suivante :

sort filename.txt > sorted.txt

Supprimer les lignes en double

L'utilisation la plus basique d'uniq est de supprimer les chaînes répétées de l'entrée et d'imprimer une sortie unique.

uniq duplicate.txt

Sortir:

Notez que le système n'affiche pas la deuxième occurrence de la ligne Ceci est un fichier texte . De plus, la commande susmentionnée n'imprime que les lignes uniques du fichier et n'affecte pas le contenu du fichier texte d'origine.

Compter les lignes répétées

Pour afficher le nombre de lignes répétées dans un fichier texte, utilisez le -c flag avec la commande par défaut.

uniq -c duplicate.txt

Sortir:

Le système affiche le nombre de chaque ligne qui existe dans le fichier texte. Vous pouvez voir que la ligne Ceci est un fichier texte apparaît deux fois dans le fichier. Par défaut, la commande uniq est sensible à la casse.

Pour imprimer uniquement les lignes en double du fichier texte, utilisez le -RÉ drapeau. Les -RÉ signifie Dupliquer .

uniq -D duplicate.txt

Le système affichera la sortie comme suit.

This is a text file.
This is a text file.

Ignorer les champs lors de la recherche de doublons

Si vous souhaitez ignorer un certain nombre de champs lors de la correspondance des chaînes, vous pouvez utiliser le -F flag avec la commande. Les -F signifie Champ .

Considérez le fichier texte suivant champs.txt .

192.168.0.1 TCP
127.0.0.1 TCP
354.231.1.1 TCP
Linux FS
Windows FS
macOS FS

Pour ignorer le premier champ :

uniq -f 1 fields.txt

Sortir:

192.168.0.1 TCP
Linux FS

La commande susmentionnée a ignoré le premier champ (les adresses IP et les noms de système d'exploitation) et correspond au deuxième mot (TCP et FS). Ensuite, il a affiché la première occurrence de chaque correspondance en tant que sortie.

Ignorer les caractères lors de la comparaison

Comme pour sauter des champs, vous pouvez également sauter des caractères. Les -s flag vous permet de spécifier le nombre de caractères à ignorer lors de la correspondance des lignes en double. Cette fonctionnalité est utile lorsque les données avec lesquelles vous travaillez se présentent sous la forme d'une liste comme suit :

où puis-je faire réparer mon écran iphone pour pas cher
1. First
2. Second
3. Second
4. Second
5. Third
6. Third
7. Fourth
8. Fifth

Ignorer les deux premiers caractères (les numérotations de liste) dans le fichier liste.txt :

uniq -s 2 list.txt

Sortir:

Dans la sortie ci-dessus, les deux premiers caractères ont été ignorés et les autres ont été mis en correspondance pour des lignes uniques.

Vérifier le premier nombre de caractères N pour les doublons

Les -dans flag vous permet de vérifier uniquement un nombre fixe de caractères pour les doublons. Par exemple:

uniq -w 2 duplicate.txt

La commande susmentionnée ne correspondra qu'aux deux premiers caractères et imprimera des lignes uniques, le cas échéant.

Sortir:

Supprimer la sensibilité à la casse

Comme mentionné ci-dessus, uniq est sensible à la casse lors de la correspondance des lignes dans un fichier. Pour ignorer la casse des caractères, utilisez le -je option avec la commande.

uniq -i duplicate.txt

Vous verrez la sortie suivante.

Remarquez dans la sortie ci-dessus, uniq n'a pas affiché les lignes ATTRAPE CELA et C'EST UN FICHIER TEXTE .

Envoyer la sortie vers un fichier

Pour envoyer la sortie de la commande uniq à un fichier, vous pouvez utiliser le Redirection de sortie ( > ) caractère comme suit :

uniq -i duplicate.txt > otherfile.txt

Lors de l'envoi d'une sortie vers un fichier texte, le système n'affiche pas la sortie de la commande. Vous pouvez vérifier le contenu du nouveau fichier en utilisant le chat commander.

cat otherfile.txt

Vous pouvez également utiliser d'autres moyens pour envoyer la sortie de la ligne de commande à un fichier sous Linux .

Analyser les données en double avec uniq

La plupart du temps, lors de la gestion des serveurs Linux, vous travaillerez soit sur le terminal, soit en éditant des fichiers texte. Par conséquent, savoir comment supprimer les copies redondantes de lignes dans un fichier texte peut être un atout majeur pour vos compétences Linux.

Travailler avec des fichiers texte peut être frustrant si vous ne savez pas comment filtrer et trier le texte dans un fichier. Pour faciliter votre travail, Linux dispose de plusieurs commandes d'édition de texte telles que sed et ok qui vous permettent de travailler efficacement avec des fichiers texte et des sorties de ligne de commande.

Partager Partager Tweeter E-mail Ces 10 exemples Sed feront de vous un utilisateur expérimenté de Linux

Vous voulez devenir un utilisateur expérimenté de Linux ? Se familiariser avec sed vous aidera. Apprenez de ces 10 exemples de sed.

Lire la suite
Rubriques connexes
  • Linux
  • Linux
A propos de l'auteur Profonde Sharma(79 articles publiés)

Deepesh est l'éditeur junior pour Linux chez MUO. Il écrit des guides d'information sur Linux, visant à offrir une expérience heureuse à tous les nouveaux arrivants. Pas sûr des films, mais si vous voulez parler de technologie, c'est votre homme. Pendant son temps libre, vous pouvez le trouver en train de lire des livres, d'écouter différents genres musicaux ou de jouer de sa guitare.

Plus de Deepesh Sharma

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner