Comando Linux uniq
Guía completa de comandos Linux
El comando Linux uniq se utiliza para verificar y eliminar líneas duplicadas en archivos de texto, y generalmente se usa junto con el comando sort.
uniq puede verificar las líneas duplicadas en archivos de texto.
Sintaxis
uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]
Parámetros:
- -c o --count: Muestra al lado de cada línea el número de veces que se repite esa línea.
- -d o --repeated: Solo muestra las líneas duplicadas.
- -f<campos> o --skip-fields=<campos>: Omite la comparación de los campos especificados.
- -s<posición de caracteres> o --skip-chars=<posición de caracteres>: Omite la comparación de los caracteres especificados.
- -u o --unique: Solo muestra las líneas que aparecen una sola vez.
- -w<posición de caracteres> o --check-chars=<posición de caracteres>: Especifica los caracteres a comparar.
- --help: Muestra la ayuda.
- --version: Muestra la información de la versión.
- [archivo de entrada]: Especifica el archivo de texto ya ordenado. Si no se especifica, se leen datos desde la entrada estándar;
- [archivo de salida]: Especifica el archivo de salida. Si no se especifica esta opción, el contenido se muestra en el dispositivo de salida estándar (terminal de visualización).
Ejemplos
En el archivo testfile, las líneas 2, 3, 5, 6, 7 y 9 son líneas duplicadas. Para eliminar las líneas duplicadas con el comando uniq, se puede usar el siguiente comando:
uniq testfile
El contenido original en testfile es:
$ cat testfile #原有内容 test 30 test 30 test 30 Hello 95 Hello 95 Hello 95 Hello 95 Linux 85 Linux 85
Después de usar el comando uniq para eliminar las líneas duplicadas, se obtiene el siguiente resultado:
$ uniq testfile #删除重复行后的内容 test 30 Hello 95 Linux 85
Para verificar el archivo y eliminar las líneas duplicadas, mostrando al inicio de cada línea el número de veces que se repite, use el siguiente comando:
uniq -c testfile
El resultado es el siguiente:
$ uniq -c testfile #删除重复行后的内容 3 test 30 #前面的数字的意义为该行共出现了3次 4 Hello 95 #前面的数字的意义为该行共出现了4次 2 Linux 85 #前面的数字的意义为该行共出现了2次Cuando las líneas duplicadas no son adyacentes, el comando uniq no funciona; es decir, si el contenido del archivo es el siguiente, el comando uniq no tendrá efecto:
$ cat testfile1 # 原有内容 test 30 Hello 95 Linux 85 test 30 Hello 95 Linux 85 test 30 Hello 95 Linux 85
En este caso podemos usar sort:
$ sort testfile1 | uniq Hello 95 Linux 85 test 30
Contar el número de veces que aparece cada línea en el archivo:
$ sort testfile1 | uniq -c 3 Hello 95 3 Linux 85 3 test 30
Encontrar las líneas duplicadas en el archivo:
$ sort testfile1 | uniq -d Hello 95 Linux 85 test 30Otras extensiones