jueves, 28 de julio de 2016

uniq

Comparándolo con sort, el programa uniq es un peso pluma. uniq realiza una tarea que puede parecer trivial. Cuando, le damos un archivo ordenado (incluida la entrada estándar), elimina las líneas duplicadas y manda los resultados a la salida estándar. A menudo se usa junto con sort para limpiar la salida de duplicados.

Consejo: Mientras que uniq es una herramienta tradicional de Unix a menudo usada con sort, la versión GNU de sort soporta la opción -u, que elimina los duplicados de la salida ordenada.

Hagamos un archivo de texto para probarlo:

[me@linuxbox ~]$ cat > foo.txt
a
b
c
a
b
c

Recuerda pulsar Ctrl-d para finalizar la salida estándar. Ahora, si ejecutamos uniq en nuestro archivo de texto:

[me@linuxbox ~]$ uniq foo.txt
a
b
c
a
b
c

los resultados no son diferentes de nuestro archivo original; los duplicados no han sido eliminados. Para que uniq haga realmente su trabajo, la entrada debe ordenarse primero:

[me@linuxbox ~]$ sort foo.txt | uniq
a
b
c

Esto es porque uniq sólo elimina las líneas duplicadas que son contiguas entre sí.

uniq tiene varias opciones. Aquí están las más comunes:

Tabla 20-2: Opciones comunes de uniq
Opción Descripción
-c Muestra una lista de líneas duplicadas precedidas por el número de veces que aparece la línea.
-d Sólo muestra las líneas repetidas, en lugar de las líneas únicas.
-f n Ignora los primeros n campos en cada línea. Los campos se separan por espacios en blanco como en sort; sin embargo, al contrario que en sort, uniq no tiene una opción para configurar un separador de campos alternativo.
-i Ignora las mayúsculas durante la comparación de líneas.
-s n Se salta (ignora) los n primeros caracteres de cada línea.
-u Sólo muestra líneas únicas. Es la configuración por defecto.

Aquí vemos uniq usado para mostrar el número de duplicados encontrados en nuestro archivo de texto, usando la opción -c:

[me@linuxbox ~]$ sort foo.txt | uniq -c
      2 a
      2 b
      2 c

No hay comentarios:

Publicar un comentario