El comando Uniq es útil para eliminar o detectar entradas duplicadas en un archivo. Este tutorial explica algunas de las opciones de línea de comandos de uniq más utilizadas que pueden resultarle útiles.
El siguiente archivo de prueba se usa en algunos de los ejemplos para comprender cómo funciona el comando uniq.
$ cat test aa aa bb bb bb xx
1. Uso básico
Sintaxis:
$ uniq [-options]
Por ejemplo, cuando se ejecuta el comando uniq sin ninguna opción, elimina las líneas duplicadas y muestra líneas únicas como se muestra a continuación.
$ uniq test aa bb xx
2. Cuente el número de ocurrencias usando la opción -c
Esta opción es para contar la aparición de líneas en el archivo.
$ uniq -c test 2 aa 3 bb 1 xx
3. Imprima solo líneas duplicadas usando la opción -d
Esta opción es para imprimir solo líneas repetidas duplicadas en el archivo. Como puede ver a continuación, esto no mostró la línea "xx", ya que no está duplicada en el archivo de prueba.
$ uniq -d test aa bb
El ejemplo anterior muestra todas las líneas duplicadas, pero solo una vez. Pero, esta opción -D imprimirá todas las líneas duplicadas en el archivo. Por ejemplo, la línea "aa" estaba allí dos veces en el archivo de prueba, por lo que el siguiente comando uniq mostraba la línea "aa" dos veces en esta salida.
$ uniq -D test aa aa bb bb bb
4. Imprima solo Líneas Únicas usando la opción -u
Esta opción es para imprimir solo líneas únicas en el archivo.
$ uniq -u test xx
Si desea eliminar líneas duplicadas de un archivo usando cierto patrón, puede usar el comando sed delete.
5. Limite la comparación a caracteres 'N' usando la opción -w
Esta opción restringe la comparación solo a los primeros caracteres 'N' especificados. Para este ejemplo, use el siguiente archivo de entrada test2.
$ cat test2 hi Linux hi LinuxU hi LinuxUnix hi Unix
El siguiente comando uniq usando la opción 'w' compara los primeros 8 caracteres de las líneas en el archivo, y luego usando la opción 'c' imprime el número de ocurrencias de las líneas del archivo.
$ uniq -c -w 8 testNew 3 hi Linux 1 hi Unix
El siguiente comando uniq usando la opción 'w' compara los primeros 8 caracteres de las líneas en el archivo, y luego usando la opción 'D' imprime todas las líneas duplicadas del archivo.
$ uniq -D -w 8 testNew hi Linux hi LinuxU hi LinuxUnix
6. Evite comparar los primeros caracteres 'N' usando la opción -s
Esta opción omite la comparación de los primeros caracteres 'N' especificados. Para este ejemplo, use el siguiente archivo de entrada test3.
$ cat test3 aabb xxbb bbc bbd
El siguiente comando uniq que usa la opción 's' omite la comparación de los primeros 2 caracteres de las líneas en el archivo, y luego usa la opción 'D' para imprimir todas las líneas duplicadas del archivo.
Aquí, los 2 caracteres iniciales, es decir, 'aa' en la primera línea y 'xx' en la 2.ª línea no se compararían y luego los siguientes 2 caracteres 'bb' en ambas líneas son iguales, por lo que se mostrarán como líneas duplicadas.
$ uniq -D -s 2 test3 aabb xxbb
7. Evite comparar los primeros campos 'N' usando la opción -f
Esta opción omite la comparación de los primeros campos 'N' especificados de líneas en el archivo.
$ cat test2 hi hello Linux hi friend Linux hi hello LinuxUnix
El siguiente comando uniq usando la opción 'f' omite la comparación de los primeros 2 campos de líneas en el archivo, y luego usando la opción 'D' imprime todas las líneas duplicadas del archivo.
Aquí, los 2 campos iniciales, es decir, "hola, hola" en la primera línea y "hola amigo" en la segunda línea no se compararían y luego el siguiente campo "Linux" en ambas líneas es el mismo, por lo que se mostrará como líneas duplicadas.
$ uniq -D -f 2 test2 hi hello Linux hi friend Linux