De vegades, és probable que tinguis fitxers de text molt llargs entre els quals és complicat cercar certs patrons o línies o paraules que es troben duplicades, o potser hi ha un munt de fitxers de text de mida petita on voleu buscar coincidències d'una forma més senzilla, i fins i tot utilitzar una pipe i buscar coincidències a la sortida d'una ordre. Doncs bé, uniq és l'ordre que estàs buscant per això.
Amb uniq podràs cercar informació redundant de manera molt senzilla. A més, també et permetrà eliminar aquests duplicats si ho necessites. I, en aquest tutorial, podreu veure alguns exemples de l'ordre que us poden resultar pràctics. Recorda que està instal·lat per defecte a la gran majoria de distros, per la qual cosa no hauràs d'instal·lar el paquet…
Bé, abans de res, vegem un exemple per entendre bé la base de funcionament de l'ordre uniq i què fa i què no fa. Per EXEMPLE, imagina que crees un fitxer de text anomenat prova.txt, i dins poses diverses frases o paraules repetides, com ara repetir tres línies «Hola, això és una prova» i després uses uniq amb ell:
nano prueba.txt uniq prueba.txt
Doncs bé, en aquest cas, la sortida de l'ordre serà simplement:
Salida: Hola, esto es una prueba
És a dir, posar una sola línia «Hola, això és una prova» eliminant les altres 2 que són iguals. Però compte, si tornes a fer servir cat per veure l'original, veuràs que no s'han eliminat del fitxer, simplement les ha eliminat de la sortida:
cat prueba.txt
La sortida del qual seria:
Hola, esto es una prueba Hola, esto es una prueba Hola, esto es una prueba
Però la comanda uniq té moltes més opcions disponibles. Per exemple, et pot dir la quantitat de vegades que es repeteix una línia, indicant al principi de la línia el nombre de repeticions. Per això:
uniq -c prueba.txt
També podries simplement imprimir en pantalla les línies repetides, i obviar les no repetides:
uniq -d prueba.txt
O les que no estan duplicades amb l'opció -u:
uniq -u prueba.txt
per utilitzar case-sentitive i diferenciar entre majúscules i minúscules, pots fer servir l'opció -i:
uniq -i prueba.txt
Bé, i com es podria fer per crear un fitxer només amb les línies úniques, eliminant d'una vegada totes les repetides. Doncs és tan senzill com fer servir una canonada per canalitzar la sortida d'uniq a un fitxer de text nou:
uniq prueba.txt > unicas.txt