Comando Linux uniq

Linux 命令大全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 30  

Linux 命令大全Guía completa de comandos Linux

Otras extensiones