La commande Uniq est utile pour supprimer ou détecter les entrées en double dans un fichier. Ce didacticiel explique quelques-unes des options de ligne de commande uniq les plus fréquemment utilisées qui pourraient vous être utiles.
Le fichier de test suivant est utilisé dans certains exemples pour comprendre le fonctionnement de la commande uniq.
$ cat test aa aa bb bb bb xx
1. Utilisation de base
Syntaxe :
$ uniq [-options]
Par exemple, lorsque la commande uniq est exécutée sans aucune option, elle supprime les lignes en double et affiche les lignes uniques comme indiqué ci-dessous.
$ uniq test aa bb xx
2. Compter le nombre d'occurrences à l'aide de l'option -c
Cette option permet de compter l'occurrence des lignes dans le fichier.
$ uniq -c test 2 aa 3 bb 1 xx
3. Imprimer uniquement les lignes en double à l'aide de l'option -d
Cette option permet d'imprimer uniquement les lignes répétées en double dans le fichier. Comme vous le voyez ci-dessous, cela n'a pas affiché la ligne "xx", car elle n'est pas en double dans le fichier de test.
$ uniq -d test aa bb
L'exemple ci-dessus affiche toutes les lignes en double, mais une seule fois. Mais, cette option -D imprimera toutes les lignes en double dans le fichier. Par exemple, la ligne "aa" figurait deux fois dans le fichier de test, donc la commande uniq suivante a affiché la ligne "aa" deux fois dans cette sortie.
$ uniq -D test aa aa bb bb bb
4. Imprimer uniquement les lignes uniques à l'aide de l'option -u
Cette option permet d'imprimer uniquement des lignes uniques dans le fichier.
$ uniq -u test xx
Si vous souhaitez supprimer les lignes en double d'un fichier en utilisant un certain modèle, vous pouvez utiliser la commande sed delete.
5. Limiter la comparaison à 'N' caractères en utilisant l'option -w
Cette option limite la comparaison aux premiers caractères "N" spécifiés uniquement. Pour cet exemple, utilisez le fichier d'entrée test2 suivant.
$ cat test2 hi Linux hi LinuxU hi LinuxUnix hi Unix
La commande uniq suivante utilisant l'option 'w' compare les 8 premiers caractères des lignes du fichier, puis l'option 'c' imprime le nombre d'occurrences des lignes du fichier.
$ uniq -c -w 8 testNew 3 hi Linux 1 hi Unix
La commande uniq suivante utilisant l'option 'w' compare les 8 premiers caractères des lignes du fichier, puis l'option 'D' imprime toutes les lignes en double du fichier.
$ uniq -D -w 8 testNew hi Linux hi LinuxU hi LinuxUnix
6. Évitez de comparer les premiers caractères "N" à l'aide de l'option -s
Cette option ignore la comparaison des premiers caractères "N" spécifiés. Pour cet exemple, utilisez le fichier d'entrée test3 suivant.
$ cat test3 aabb xxbb bbc bbd
La commande uniq suivante utilisant l'option 's' saute la comparaison des 2 premiers caractères des lignes du fichier, puis l'utilisation de l'option 'D' imprime toutes les lignes en double du fichier.
Ici, les 2 caractères commençants, c'est-à-dire "aa" sur la 1ère ligne et "xx" sur la 2ème ligne, ne seraient pas comparés, puis les 2 caractères suivants "bb" sur les deux lignes seraient identiques et seraient donc affichés comme des lignes dupliquées.
$ uniq -D -s 2 test3 aabb xxbb
7. Évitez de comparer les premiers champs "N" à l'aide de l'option -f
Cette option ignore la comparaison des premiers champs "N" spécifiés de lignes dans le fichier.
$ cat test2 hi hello Linux hi friend Linux hi hello LinuxUnix
La commande uniq suivante utilisant l'option 'f' saute la comparaison des 2 premiers champs de lignes dans le fichier, puis en utilisant l'option 'D' imprime toutes les lignes en double du fichier.
Ici, commencer par 2 champs, c'est-à-dire "salut bonjour" sur la 1ère ligne et "salut ami" sur la 2ème ligne, ne serait pas comparé, puis le champ suivant "Linux" sur les deux lignes serait identique et serait donc affiché sous forme de lignes dupliquées.
$ uniq -D -f 2 test2 hi hello Linux hi friend Linux