Cómo usar el comando uniq para procesar listas en Linux

Vimos el comando ordenar en nuestro artículo anterior, pero ordenar cualquier archivo a menudo resultará en muchas filas duplicadas adyacentes entre sí. Se vuelve demasiado difícil visualizar estas líneas correctamente.

En este escenario, el uniq El comando lo ayuda a imprimir líneas duplicadas una vez en la salida. En realidad, elimina las líneas que se repiten e imprime la primera línea repetida adyacente, lo que nos permite visualizar la salida correctamente.

Las líneas utilizadas en el archivo de entrada para el uniq El comando no puede exceder los 2048 bytes de longitud (incluidos los caracteres de nueva línea) ni contener caracteres nulos.

Índice

    Sintaxis

    uniq [OPTION]... [INPUT [OUTPUT]]

    Ejemplos

    A continuación se muestra una serie de ejemplos, comenzando sin opciones. Veremos varios casos de uso. Algunos sólo implican uniq, y otros dependen de comandos adicionales.

    sin ninguna opcion

    A continuación se muestra un archivo llamado archivo2, que contiene datos. Tenga en cuenta que este archivo no está ordenado y que las líneas duplicadas no son adyacentes entre sí. Antes de usar el uniq comando con este archivo, deberíamos sort esta. En el ejemplo, probé el uniq con el archivo original, pero solo imprime la salida tal cual, como un cat salir. En el siguiente ejemplo, tomamos la salida de un sort orden y mamada con uniq pedido. Esto nos ayuda a entender el comportamiento de uniq pedido:

    $ cat file2
    ChhatrapatiShahuMaharaj
    Dr.B.R.Ambedkar
    Budhha
    Dr.B.R.Ambedkar
    Budhha
    Dr.B.R.Ambedkar
    Budhha
    
    $ uniq file2
    ChhatrapatiShahuMaharaj
    Dr.B.R.Ambedkar
    Budhha
    Dr.B.R.Ambedkar
    Budhha
    Dr.B.R.Ambedkar
    Budhha
    
    $ sort file2
    Budhha
    Budhha
    Budhha
    ChhatrapatiShahuMaharaj
    Dr.B.R.Ambedkar
    Dr.B.R.Ambedkar
    Dr.B.R.Ambedkar
    
    $ sort file2 | uniq
    Budhha
    ChhatrapatiShahuMaharaj
    Dr.B.R.Ambedkar

    Con la opción -c, --count

    A continuación, en el siguiente ejemplo, usamos el -c Opción para contar líneas repetidas. el uniq el comando imprime lo que cuenta como un prefijo con la línea. El siguiente ejemplo nos dice que la primera fila se repite tres veces, la segunda fila una vez y la tercera fila tres veces:

    $ sort file2 | uniq -c
        3 Budhha
        1 ChhatrapatiShahuMaharaj
        3 Dr.B.R.Ambedkar

    Con -d, opción --repetida

    el -d La opción imprime solo las líneas que se repiten. Rechaza filas no duplicadas. Por lo tanto, la línea ChhatrapatiShahuMaharaj fue rechazada en el siguiente ejemplo:

    $ sort file2 | uniq -d
    Budhha
    Dr.B.R.Ambedkar

    En el siguiente ejemplo, utilicé el -c posibilidad de referencias cruzadas si el -d La opción imprime solo líneas repetidas o no:

    $ sort file2 | uniq -cd
        3 Budhha
        3 Dr.B.R.Ambedkar

    Con -D, opción --todo-repetido

    el -D La opción imprime líneas repetidas y elimina líneas no duplicadas. En el siguiente ejemplo, el uniq El comando imprime solo todas las filas duplicadas y elimina las filas no duplicadas:

    $ sort file2 | uniq -D
    Budhha
    Budhha
    Budhha
    Dr.B.R.Ambedkar
    Dr.B.R.Ambedkar
    Dr.B.R.Ambedkar

    Con -u, opción --unique

    A diferencia de la opción anterior, el -u La opción imprime líneas únicas, es decir, líneas no duplicadas. Por lo tanto, en el siguiente ejemplo, imprime ChhatrapatiShahuMaharaj producción :

    $ sort file2 | uniq -u
    ChhatrapatiShahuMaharaj

    Con la opción -i, --ignore-case

    Utilizando el -i opción, podemos ignorar la distinción entre mayúsculas y minúsculas de los caracteres. A continuación he dado una salida de la uniq Comando con y sin el -i posibilidad de comparar:

    $ cat file3
    aaaa
    aaaa
    AAAA
    AAAA
    bbbb
    BBBB
    
    $ uniq file3
    aaaa
    AAAA
    bbbb
    BBBB
    
    $ uniq -i file3
    aaaa
    bbbb

    Con -f, --skip-campos = N

    A veces tenemos que ignorar algunos campos para filtrar las filas duplicadas. Esto es posible mediante el uso de la -f opción. En el siguiente ejemplo, nos saltamos el primer campo (primera columna) para comparar las filas duplicadas en el segundo campo. Di los dos ejemplos, con y sin el -f opción, para una mejor comprensión del comportamiento de la opción:

    $ cat file5
    Amit aaaa
    Ajit aaaa
    Advi bbbb
    Kaju bbbb
    
    $ uniq file5
    Amit aaaa
    Ajit aaaa
    Advi bbbb
    Kaju bbbb
    
    $ uniq -f 1 file5
    Amit aaaa
    Advi bbbb

    Con la opción -s, --skip-char = N

    Al igual que el campo, también podemos omitir caracteres usando el -s opción. Por favor, tenga en cuenta que el uniq El comando imprime solo la primera línea duplicada y elimina las líneas duplicadas restantes. Entonces 33aa y 55bb fueron tirados. Aquí está el ejemplo:

    $ cat file4
    22aa
    33aa
    44bb
    55bb
    
    $ uniq file4
    22aa
    33aa
    44bb
    55bb
    
    $ uniq -s 2 file4
    22aa
    44bb

    Con la opción -w, --check-chars = N

    Al igual que omitir caracteres, también podemos considerar caracteres usando el -w opción, como en el ejemplo:

    $ cat file6
    aa12
    aa34
    bb56
    bb78
    
    $ uniq file6
    aa12
    aa34
    bb56
    bb78
    
    $ uniq -w 2 file6
    aa12
    bb56

    Con la opción --version

    Utilizar el --version posibilidad de comprobar la versión del uniq pedido.

    $ uniq --version
    uniq (GNU coreutils) 8.4
    Copyright (C) 2010 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    
    Written by Richard M. Stallman and David MacKenzie.

    uniq no detecta líneas repetidas a menos que sean adyacentes. el uniq El comando puede contar e imprimir el número de líneas repetidas. Al igual que las filas duplicadas, también podemos filtrar filas únicas (filas no duplicadas) e ignorar la distinción entre mayúsculas y minúsculas. Podemos ignorar campos y caracteres antes de comparar filas duplicadas y también considerar caracteres para filtrar filas.

    Después de examinar los múltiplos uniq opciones de pedido, me gustaría compartir una pequeña imagen para tenerla como referencia.

    Artículos de interés

    Subir