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.
Imprimer uniquement les lignes répétées
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 LinuxVous 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
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 SharmaAbonnez-vous à notre newsletter
Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !
Cliquez ici pour vous abonner