GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo eliminar líneas duplicadas dentro de un archivo de texto?

Un enorme archivo de texto mío (hasta 2 GiB) contiene alrededor de 100 duplicados exactos de cada línea (inútil en mi caso, ya que el archivo es una tabla de datos similar a CSV).

Lo que necesito es eliminar todas las repeticiones mientras (preferiblemente, pero esto se puede sacrificar por un aumento significativo del rendimiento) manteniendo el orden de la secuencia original. En el resultado, cada línea debe ser única. Si hubiera 100 líneas iguales (por lo general, los duplicados se distribuyen por todo el archivo y no serán vecinos), solo quedará una de ese tipo.

He escrito un programa en Scala (considéralo Java si no conoces Scala) para implementar esto. ¿Pero tal vez hay herramientas nativas escritas en C más rápidas que pueden hacer esto más rápido?

ACTUALIZACIÓN:el nombre de archivo awk '!seen[$0]++' filename La solución parecía funcionar bien para mí siempre que los archivos estuvieran cerca de 2 GiB o menos, pero ahora que tengo que limpiar un archivo de 8 GiB, ya no funciona. Parece tomar el infinito en una Mac con 4 GiB de RAM y una PC con Windows 7 de 64 bits con 4 GiB de RAM y 6 GiB de intercambio, simplemente se queda sin memoria. Y no me entusiasma probarlo en Linux con 4 GiB de RAM dada esta experiencia.

Respuesta aceptada:

Un awk solución vista en #bash (Freenode):

awk '!seen[$0]++' filename

Linux
  1. ¿Cómo eliminar líneas en blanco de un archivo (incluidos tabuladores y espacios)?

  2. ¿Eliminar eficientemente el primer par de líneas de un archivo de texto?

  3. 7 ejemplos de comandos Linux Uniq para eliminar líneas duplicadas del archivo

  4. Cómo eliminar palabras duplicadas de un archivo de texto sin formato usando el comando de Linux

  5. Cómo usar sed para eliminar las últimas n líneas de un archivo

Cómo imprimir líneas duplicadas en un archivo de texto en Linux

Cómo quitar líneas de un archivo usando el comando Sed

Cómo quitar todos los caracteres de espacio en blanco de un archivo de texto

¿Cómo eliminar "datos binarios" de un archivo de texto (por ejemplo, Bash_history)?

¿Duplicar, con unos pequeños cambios, unas pocas líneas en un archivo de texto?

Cómo crear dibujos ASCII en Vim Editor (cuadros de dibujo, líneas, elipses, flechas dentro del archivo de texto)