GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser la commande uniq pour traiter des listes sous Linux

Nous avons vu la commande de tri dans notre article précédent, mais le tri de n'importe quel fichier entraînera souvent de nombreuses lignes en double adjacentes les unes aux autres. Il devient trop difficile de visualiser correctement ces lignes.

Dans ce scénario, le uniq La commande vous aide à imprimer les lignes en double une fois dans la sortie. Il supprime en fait les lignes répétées et imprime la première ligne répétée adjacente, ce qui nous permet de visualiser correctement la sortie.

Les lignes utilisées dans le fichier d'entrée pour le uniq La commande ne peut pas dépasser 2048 octets de longueur (y compris les caractères de saut de ligne) ni contenir de caractères nuls.

Syntaxe

uniq [OPTION]... [INPUT [OUTPUT]]

Exemples

Vous trouverez ci-dessous une série d'exemples, commençant par aucune option. Nous allons parcourir plusieurs cas d'utilisation. Certains n'impliquent que uniq , et d'autres s'appuient sur des commandes supplémentaires.

Sans aucune option

Ci-dessous se trouve un fichier nommé file2 , qui contient certaines données. Notez que ce fichier n'est pas trié et que les lignes dupliquées ne sont pas adjacentes les unes aux autres. Avant d'utiliser le uniq commande avec ce fichier, nous devrions sort ce. Dans l'exemple, j'ai essayé le uniq commande avec le fichier d'origine, mais elle n'imprime que la sortie telle quelle, un peu comme un cat production. Dans l'exemple suivant, nous prenons la sortie d'un sort commande et dirigez-la avec uniq commande. Cela nous aide à comprendre le comportement de uniq commande :

$ cat file2
ChhatrapatiShahuMaharaj
Dr.B.R.Ambedkar
Budhha
Dr.B.R.Ambedkar
Budhha
Dr.B.R.Ambedkar
Budhha

$ uniq file2
ChhatrapatiShahuMaharaj
Dr.B.R.Ambedkar
Budhha
Dr.B.R.Ambedkar
Budhha
Dr.B.R.Ambedkar
Budhha

$ sort file2
Budhha
Budhha
Budhha
ChhatrapatiShahuMaharaj
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar

$ sort file2 | uniq
Budhha
ChhatrapatiShahuMaharaj
Dr.B.R.Ambedkar

Avec l'option -c, --count

Ci-dessous, dans l'exemple suivant, nous utilisons le -c possibilité de compter les lignes répétées. Le uniq la commande imprime qui compte comme un préfixe avec la ligne. L'exemple ci-dessous nous indique que la première ligne est répétée trois fois, la deuxième ligne une fois et la troisième ligne trois fois :

$ sort file2 | uniq -c
    3 Budhha
    1 ChhatrapatiShahuMaharaj
    3 Dr.B.R.Ambedkar

Avec l'option -d, --repeated

Le -d L'option n'imprime que les lignes répétées. Il supprime les lignes non dupliquées. Par conséquent, ligne ChhatrapatiShahuMaharaj a été ignoré dans l'exemple ci-dessous :

$ sort file2 | uniq -d
Budhha
Dr.B.R.Ambedkar

Dans l'exemple ci-dessous, j'ai utilisé le -c option pour vérifier si le -d l'option n'imprime que les lignes répétées ou non :

$ sort file2 | uniq -cd
    3 Budhha
    3 Dr.B.R.Ambedkar

Avec l'option -D, --all-repeated

Le -D L'option imprime les lignes répétées et supprime les lignes non dupliquées. Dans l'exemple ci-dessous, le uniq La commande imprime uniquement toutes les lignes dupliquées et supprime les lignes non dupliquées :

$ sort file2 | uniq -D
Budhha
Budhha
Budhha
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar

Avec l'option -u, --unique

En face de l'option ci-dessus, le -u L'option imprime des lignes uniques, c'est-à-dire des lignes non dupliquées. Par conséquent, dans l'exemple ci-dessous, il affiche ChhatrapatiShahuMaharaj en sortie :

$ sort file2 | uniq -u
ChhatrapatiShahuMaharaj

Avec l'option -i, --ignore-case

Utilisation du -i option, nous pouvons ignorer la sensibilité à la casse des caractères. Ci-dessous, j'ai donné une sortie du uniq commande avec et sans -i possibilité de comparer :

$ cat file3
aaaa
aaaa
AAAA
AAAA
bbbb
BBBB

$ uniq file3
aaaa
AAAA
bbbb
BBBB

$ uniq -i file3
aaaa
bbbb

Avec -f, --skip-fields=N

Parfois, nous devons ignorer certains champs pour filtrer les lignes en double. Ceci est possible en utilisant le -f option. Dans l'exemple suivant, nous sautons le premier champ (première colonne) pour comparer les lignes en double du deuxième champ. J'ai donné les deux exemples, avec et sans le -f option, pour une meilleure compréhension du comportement de l'option :

$ cat file5
Amit aaaa
Ajit aaaa
Advi bbbb
Kaju bbbb

$ uniq file5
Amit aaaa
Ajit aaaa
Advi bbbb
Kaju bbbb

$ uniq -f 1 file5
Amit aaaa
Advi bbbb

[ Les lecteurs ont également aimé :Travailler avec des canaux sur la ligne de commande Linux ]

Avec l'option -s, --skip-char=N

Tout comme le champ, nous pouvons également ignorer des caractères en utilisant le -s option. Veuillez garder à l'esprit que le uniq La commande imprime uniquement la première ligne en double et supprime les autres lignes en double. Par conséquent 33aa et 55bb ont été jetés. Voici l'exemple :

$ cat file4
22aa
33aa
44bb
55bb

$ uniq file4
22aa
33aa
44bb
55bb

$ uniq -s 2 file4
22aa
44bb

Avec l'option -w, --check-chars=N

Tout comme pour sauter des caractères, nous pouvons également considérer des caractères en utilisant le -w option, comme dans l'exemple :

$ cat file6
aa12
aa34
bb56
bb78

$ uniq file6
aa12
aa34
bb56
bb78

$ uniq -w 2 file6
aa12
bb56

Avec l'option --version

Utilisez le --version option pour vérifier la version de uniq commande.

$ uniq --version
uniq (GNU coreutils) 8.4
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Richard M. Stallman and David MacKenzie.

[ Téléchargement gratuit :Aide-mémoire sur les commandes avancées de Linux. ] 

Récapitulez

uniq ne détecte pas les lignes répétées à moins qu'elles ne soient adjacentes. Le uniq La commande peut compter et imprimer le nombre de lignes répétées. Tout comme les lignes en double, nous pouvons également filtrer les lignes uniques (lignes non dupliquées) et ignorer la sensibilité à la casse. Nous pouvons ignorer les champs et les caractères avant de comparer les lignes en double et également prendre en compte les caractères pour filtrer les lignes.

Après avoir examiné les multiples uniq options de commande, je voudrais partager une petite image pour la garder avec vous pour référence.


Linux
  1. Comment utiliser la commande Linux sed

  2. Comment utiliser la commande Linux grep

  3. Comment utiliser la commande history sous Linux

  4. Boîte à outils Sysadmin :comment utiliser la commande sort pour traiter du texte sous Linux

  5. Comment utiliser la commande id sous Linux

Comment utiliser la commande Linux Ping

Comment utiliser la commande fd sur le système Linux

Comment utiliser la commande wget sous Linux ?

Comment utiliser la commande xargs sous Linux ?

Comment utiliser la commande RPM sous Linux

Comment utiliser la commande which sous Linux