El comando Linux Uniq explota sus archivos de texto en busca de cadenas únicas o repetitivas. En esta guía, cubriremos su versatilidad y funciones, así como cómo puede aprovechar al máximo esta gran utilidad.
Encontrar líneas de texto coincidentes en Linux
El comando UNIQ es rápido, flexible y excelente en lo que hace. Sin embargo, como muchos comandos de Linux, tiene algunas peculiaridades, y está bien estar al tanto de ellos. Si realiza un movimiento drástico sin conocimiento interno, es posible que se quede desconcertante sobre los resultados. Señalaremos estas peculiaridades a medida que avanzamos.
Team UNIQ es ideal para aquellos en el campamento de los objetivos, diseñados para hacer una cosa y hacerlo bien. Es por eso que también es particularmente adecuado para trabajar con tuberías y desempeñar su papel en el equipo de tuberías. Uno de sus contribuyentes más frecuentes es el tipo, porque UNIQ debe tener una entrada ordenada para funcionar.
Ejecutando uniq sin parámetros
Tenemos un archivo de texto con la letra de la canción de Robert Johnson, creo que estoy limpiando mi escoba. Veamos qué hace uniq.
Ingresaremos lo siguiente para convertir la salida a menos:
Uniq Dust-My-Broom. txt |menos
Obtenemos toda la canción, incluidas las líneas repetidas, más pequeñas:
No se siente como líneas únicas o repetidas.
Correcto, porque esa es la primera peculiaridad. Si ejecuta UNIQ sin parámetros, se comporta como si hubiera usado el parámetr o-U (cadenas únicas). Esto le dice a UNIQ que imprima solo líneas únicas desde el archivo. La razón por la que ves líneas repetidas es que para que Uniq considere una línea duplicada, debe ser contigua por su duplicado, y aquí es donde se aplica la clasificación.
Cómo eliminar el vino de Linux
Cuando clasificamos un archivo, agrupa las líneas repetidas y UNIQ las trata como duplicados. Usaremos Sort para el archivo, dirigiremos la salida ordenada a UNIQ y luego dirigiremos la salida final a menos.
Para hacer esto, escribimos lo siguiente:
Ordena el polvo-my-broom. txt |Uniq |menos
La lista ordenada de cadenas se muestra menos.
La línea «Creo que estoy desempolvando mi escoba» definitivamente ocurre más de una vez en la canción. De hecho, se repite dos veces en las primeras cuatro líneas de la canción.
Entonces, ¿por qué aparece en la lista de líneas únicas? Debido a que la primera vez que aparece una línea en el archivo, es única; Solo se duplican las entradas posteriores. Puede pensar que enumera la primera aparición de cada línea única.
Usemos la clasificación nuevamente y redirigir la salida a un nuevo archivo. De esta manera, no necesitamos usar el tipo en cada comando.
Escriba el siguiente comando:
sort dust-my-broom.txt >sorted. txt.
sorted.txt »в окне терминала. ‘ width = ”646 ″ height =” 57 ″ onload = ”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);» onerror = ”this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”>
Ahora tenemos un archivo previamente organizado para trabajar.
Contando duplicados
Puede usar la opció n-c (Count) para imprimir cuántas veces aparece cada línea en el archivo.
Escriba el siguiente comando:
uni q-c sorted. txt |menos
Cada línea comienza con cuántas veces aparece esa línea en el archivo. Sin embargo, notará que la primera línea está en blanco. Esto indica que hay cinco líneas vacías en el archivo.
Si desea que la salida se ordene en orden numérico, puede pasar la salida UNIQ para clasificar. En nuestro ejemplo, usaremos los parámetro s-r (reverso) y-n (clasificación numérica) y enviaremos la salida a menos.
uni q-c sorted. txt |Sor t-rn |menos
La lista se clasifica en orden descendente en función de la frecuencia con la que aparece cada línea.
Lista de solo cuerdas repetidas
Si desea ver solo aquellas líneas que se repiten en el archivo, puede usar el parámetr o-d (repetición). No importa cuántas veces se duplique una línea en el archivo, solo se especifica una vez.
Cómo jugar al observador en Linux
Para usar esta opción, ingresamos lo siguiente:
uni q-d sorted. txt
Las líneas duplicadas se enumeran para nosotros. Notará una línea en blanco en la parte superior, lo que significa que el archivo contiene líneas en blanco repetidas; esto no es espacio dejado por UNIQ para compensar cosméticamente la lista.
También podemos combinar los parámetro s-d (repetición) y-c (count) y dirigir la salida a través de la clasificación. Esto nos da una lista ordenada de cuerdas que aparecen al menos dos veces.
Escriba lo siguiente para usar esta opción:
uni q-d -c sorted. txt |ordena r-rn
Enumere todas las líneas repetidas
Si desea ver una lista de cada línea recurrente, así como una entrada para cada vez que aparece la línea en el archivo, puede usar la opció n-d (todas las líneas recurrentes).
Para usar esta opción, ingresa lo siguiente:
uni q-d sorted. txt |menos
La lista contiene una entrada para cada línea repetida.
Si usa el parámetr o-grupo, imprime cada línea repetida con una línea en blanco, ya sea antes (agregar), después de cada grupo (agregar), o ambos antes y después (ambos) cada grupo.
Usamos append como modificador, por lo que escribimos lo siguiente:
uniq --group = append sorted. txt |menos
Los grupos están separados por líneas en blanco para que sean más fáciles de leer.
Revisando para un cierto número de caracteres
Por defecto, UNIQ verifica la longitud completa de cada línea. Sin embargo, si desea limitar las verificaciones a un cierto número de caracteres, puede usar el parámetr o-W (verificación de caracteres).
En este ejemplo, repetiremos el último comando, pero limitaremos las comparaciones a los primeros tres caracteres. Para hacer esto, escriba el siguiente comando:
uni q-w 3 --group = append sorted. txt |menos
Obtenemos resultados y agrupaciones completamente diferentes.
Todas las cadenas que comienzan con «I B» se agrupan porque estas partes de las cuerdas son idénticas, por lo que se consideran duplicados.
Del mismo modo, todas las líneas que comienzan con «I» se tratan como duplicados a pesar de que el resto del texto es diferente.
Ignorando un cierto número de caracteres
En algunos casos, puede ser útil omitir un cierto número de caracteres al comienzo de cada línea, como cuando las líneas en un archivo están numeradas. O, digamos que necesita uniq para saltar sobre una marca de tiempo y comenzar a verificar las líneas del sexto personaje en lugar del primer personaje.
Cómo instalar Gitcola en Linux
A continuación se muestra una versión de nuestro archivo ordenado con cadenas numeradas.
Si queremos que UNIQ comience sus verificaciones de comparación del tercer personaje, podemos usar el parámetr o-s (Skip Caracteres) escribiendo lo siguiente:
uni q-s 3-d -c numered. txt
Las líneas se reconocen como duplicadas y se contan correctamente. Tenga en cuenta que los números de línea mostrados corresponden a la primera ocurrencia de cada duplicado.
También puede omitir campos (una secuencia de caracteres y algunos espacios) en lugar de caracteres. Usaremos el parámetr o-f (campos) para decirle a UNIQ qué campos ignora.
Entramos en lo siguiente para decirle a Uniq que ignore el primer campo:
uni q-f 1-d -c numerado. txt
Obtuvimos los mismos resultados que cuando le dijimos a UNIQ que saltee los tres caracteres al comienzo de cada línea.
Ignorando el caso
Por defecto, UNIQ es sensible a la caja. Si la misma letra se muestra en mayúsculas y minúsculas, Uniq supone que las cadenas son diferentes
Por ejemplo, vea la salida del siguiente comando:
uni q-d -c sorted. txt |ordena r-rn