GNU/Linux >> Tutoriales Linux >  >> Linux

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

Hemos visto el comando ordenar en nuestro artículo anterior, pero ordenar cualquier archivo a menudo resultará en muchas líneas duplicadas adyacentes entre sí. Se vuelve demasiado difícil ver correctamente esas líneas.

En este escenario, el uniq El comando lo ayuda a imprimir líneas duplicadas una vez en la salida. De hecho, descarta las líneas que se repiten e imprime la primera línea repetida adyacente, lo que nos permite ver 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.

Sintaxis

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

Ejemplos

A continuación hay una serie de ejemplos, comenzando sin opciones. Veremos varios casos de uso. Algunos involucran solo uniq y otros dependen de comandos adicionales.

Sin ninguna opción

A continuación se muestra un archivo llamado archivo2 , que contiene algunos 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, debemos sort eso. En el ejemplo, he probado el uniq comando con el archivo original, pero solo imprime la salida tal como está, como un cat producción. En el siguiente ejemplo, tomamos la salida de un sort comando y canalícelo con uniq dominio. Esto nos ayuda a entender el comportamiento del uniq comando:

$ 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 -c, opción --count

A continuación, en el siguiente ejemplo, estamos usando -c opción para contar las líneas repetidas. El uniq el comando imprime que cuenta como un prefijo con la línea. El siguiente ejemplo nos dice que la primera línea se repite tres veces, la segunda línea una vez y la tercera línea 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. Descarta líneas no duplicadas. Por lo tanto, línea ChhatrapatiShahuMaharaj ha sido descartado en el siguiente ejemplo:

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

En el siguiente ejemplo, he usado -c opción para verificar si -d la opción es solo imprimir las líneas repetidas o no:

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

Con -D, opción --all-repeated

El -D La opción imprime líneas repetidas y descarta las líneas no duplicadas. En el siguiente ejemplo, uniq El comando imprime solo todas las líneas duplicadas y descarta las líneas 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 única

Opuesto a 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 como salida:

$ sort file2 | uniq -u
ChhatrapatiShahuMaharaj

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

Usando 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 uniq comando con y sin -i opción de comparar:

$ cat file3
aaaa
aaaa
AAAA
AAAA
bbbb
BBBB

$ uniq file3
aaaa
AAAA
bbbb
BBBB

$ uniq -i file3
aaaa
bbbb

Con -f, --skip-fields=N

A veces necesitamos omitir algunos campos para filtrar líneas duplicadas. Esto es posible usando -f opción. En el siguiente ejemplo, nos saltamos el primer campo (primera columna) para comparar las líneas duplicadas del segundo campo. He dado ambos ejemplos, con y sin -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

[ A los lectores también les gustó:Trabajar con canalizaciones en la línea de comandos de Linux ]

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

Al igual que el campo, también podemos omitir caracteres usando -s opción. Tenga en cuenta que uniq El comando imprime solo la primera línea duplicada y descarta otras líneas duplicadas. Por lo tanto 33aa y 55bb han sido descartados. 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 -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

Utilice la --version opción para comprobar la versión del uniq comando.

$ 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.

[ Descarga gratuita:hoja de referencia de comandos avanzados de Linux. ] 

Resumir

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 líneas duplicadas, también podemos filtrar líneas únicas (líneas no duplicadas) y también podemos ignorar la distinción entre mayúsculas y minúsculas. Podemos omitir campos y caracteres antes de comparar líneas duplicadas y también considerar caracteres para filtrar líneas.

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


Linux
  1. Cómo usar el comando sed de Linux

  2. Cómo usar el comando grep de Linux

  3. Cómo usar el comando de historial en Linux

  4. Cómo usar el comando id en Linux

  5. Cómo usar el comando "pantalla" en Linux

Cómo usar el comando ping de Linux

Cómo usar el comando fd en el sistema Linux

¿Cómo usar el comando wget en Linux?

¿Cómo usar el comando xargs en Linux?

Cómo usar el comando RPM en Linux

Cómo usar el comando which en Linux