El comando uniq en Linux es una utilidad de línea de comandos que informa o filtra las líneas repetidas en un archivo.
En palabras simples, uniq es la herramienta que ayuda a detectar las líneas duplicadas adyacentes y también elimina las líneas duplicadas. uniq filtra las líneas coincidentes adyacentes del archivo de entrada (que se requiere como argumento) y escribe los datos filtrados en el archivo de salida.
Sintaxis del comando uniq:
//...syntax of uniq...// $uniq [OPTION] [INPUT[OUTPUT]]
La sintaxis de esto es bastante fácil de entender. Aquí, INPUT se refiere al archivo de entrada en el que las líneas repetidas deben filtrarse y, si no se especifica INPUT, uniq lee desde la entrada estándar. OUTPUT se refiere al archivo de salida en el que puede almacenar la salida filtrada generada por el comando uniq y, como en el caso de INPUT, si no se especifica OUTPUT, uniq escribe en la salida estándar.
Ahora, comprendamos el uso de esto con la ayuda de un ejemplo. Suponga que tiene un archivo de texto llamado kt.txt que contiene líneas repetidas que deben omitirse. Esto se puede hacer simplemente con uniq.
//displaying contents of kt.txt// $cat kt.txt I love music. I love music. I love music. I love music of Kartik. I love music of Kartik. Thanks.
Ahora, como podemos ver, el archivo anterior contiene varias líneas duplicadas. Ahora, usemos el comando uniq para eliminarlos:
//...using uniq command.../ $uniq kt.txt I love music. I love music of Kartik. Thanks. /* with the use of uniq all the repeated lines are removed*/
Como puede ver, solo usamos el nombre del archivo de entrada en el ejemplo uniq anterior y como no usamos ningún archivo de salida para almacenar la salida producida, el comando uniq mostró la salida filtrada en la salida estándar con todos los duplicados. líneas eliminadas.
Nota: uniq no puede detectar las líneas duplicadas a menos que sean adyacentes entre sí. Por lo tanto, el contenido del archivo debe ordenarse antes de usar uniq o simplemente puede usar sort -u en lugar del comando uniq.
Opciones para el comando uniq:
- -c – -count : Indica cuántas veces se repitió una línea al mostrar un número como prefijo con la línea.
- -d – -repeated : Solo imprime las líneas repetidas y no las líneas que no se repiten.
- -D – -all-repeated[=METHOD] : Imprime todas las líneas duplicadas y METHOD puede ser cualquiera de los siguientes:
- none : no delimite líneas duplicadas en absoluto. Este es el valor predeterminado.
- Anteponer: inserte una línea en blanco antes de cada conjunto de líneas duplicadas.
- Separar: inserte una línea en blanco entre cada conjunto de líneas duplicadas.
- -f N – -skip-fields(N) : Le permite omitir N campos (un campo es un grupo de caracteres, delimitado por espacios en blanco) de una línea antes de determinar la unicidad de una línea.
- -i – -ignorar mayúsculas y minúsculas: de forma predeterminada, las comparaciones realizadas distinguen entre mayúsculas y minúsculas, pero con esta opción se pueden realizar comparaciones que no distinguen entre mayúsculas y minúsculas.
- -s N – -skip-chars(N) : No compara los primeros N caracteres de cada línea al determinar la unicidad. Es como la opción -f, pero omite caracteres individuales en lugar de campos.
- -u – -unique : Le permite imprimir solo líneas únicas.
- -z – -zero-terminated : Hará que una línea termine con 0 bytes (NULL), en lugar de una nueva línea.
- -w N – -check-chars(N) : Solo compara N caracteres en una línea.
- – – ayuda : Muestra un mensaje de ayuda y sale.
- – – version : Muestra información de la versión y sale.
Ejemplos de uniq con Opciones
1. Usando la opción -c: Indica el número de veces que se repitió una línea.
//using uniq with -c// $uniq -c kt.txt 3 I love music. 1 2 I love music of Kartik. 1 1 Thanks. /*at the starting of each line its repeated number is displayed*/
2. Using -d option : It only prints the repeated lines. //using uniq with -d// $uniq -d kt.txt I love music. I love music of Kartik. /*it only displayed one duplicate line per group*/
3. Usando la opción -D: también imprime solo líneas duplicadas pero no una por grupo.
//using -D option// $uniq -D kt.txt I love music. I love music. I love music. I love music of Kartik. I love music of Kartik. /* all the duplicate lines are displayed*/
4. Usando la opción -u: Imprime solo las líneas únicas.
//using -u option// $uniq -u kt.txt Thanks. /*only unique lines are displayed*/
5. Usar la opción -f N: Como se dijo anteriormente, esto permite omitir los N campos al comparar la unicidad de las líneas. Esta opción es útil cuando las líneas están numeradas como se muestra en el siguiente ejemplo:
//displaying contents of f1.txt// $cat f1.txt 1. I love music. 2. I love music. 3. I love music of Kartik. 4. I love music of Kartik. //now using uniq with -f N option// $uniq -f 2 f1.txt 1. I love music. 3. I love music of Kartik. /*2 is used cause we needed to compare the lines after the numbering 1,2.. and after dots*/
6. Uso de la opción -s N: es similar a la opción -f N pero omite N caracteres pero no N campos.
//displaying content of f2.txt// $cat f2.txt #%@I love music. ^&(I love music. *-!@thanks. #%@!thanks. //now using -s N option// $uniq -s 3 f2.txt #%@I love music. *-!@thanks. #%@!thanks. /*lines same after skipping 3 characters are filtered*/
7. Usando la opción -w: Similar a la forma de omitir caracteres, también podemos pedirle a uniq que limite la comparación a un número determinado de caracteres. Para ello, se utiliza la opción de línea de comandos -w.
//displaying content of f3.txt// $cat f3.txt How it is possible? How it can be done? How to use it? //now using -w option// $uniq -w 3 f3.txt How /*as the first 3 characters of all the 3 lines are same that's why uniq treated all these as duplicates and gave output accordingly*/
8. Uso de la opción -i: se utiliza para hacer que la comparación no distinga entre mayúsculas y minúsculas.
//displaying contents of f4.txt// $cat f4.txt I LOVE MUSIC i love music THANKS //using uniq command// $uniq f4.txt I LOVE MUSIC i love music THANKS /*the lines aren't treated as duplicates with simple use of uniq*/ //now using -i option// $uniq -i f4.txt I LOVE MUSIC THANKS /*now second line is removed when -i option is used*/
9. Uso de la opción -z: de forma predeterminada, la salida que produce uniq tiene una terminación de nueva línea. Sin embargo, si lo desea, desea tener una salida terminada en NULL (útil al tratar con uniq en scripts). Esto puede hacerse posible usando la opción de línea de comando -z.
Sintaxis:
//syntax of using uniq with -z option// $uniq -z file-name
?list=PLqM7alHXFySFc4KtwEZTANgmyJm3NqS_L
Publicación traducida automáticamente
Artículo escrito por Dimpy Varshni y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA