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.