GNU/Linux >> Linux Esercitazione >  >> Linux

Come rimuovere le righe duplicate all'interno di un file di testo?

Un mio enorme file di testo (fino a 2 GiB) contiene circa 100 duplicati esatti di ogni riga al suo interno (inutile nel mio caso, poiché il file è una tabella di dati simile a CSV).

Quello di cui ho bisogno è rimuovere tutte le ripetizioni mentre (preferibilmente, ma questo può essere sacrificato per un aumento significativo delle prestazioni) mantenendo l'ordine della sequenza originale. Nel risultato ogni linea deve essere unica. Se c'erano 100 righe uguali (di solito i duplicati sono sparsi sul file e non saranno vicini) ne deve essere rimasta solo una del tipo.

Ho scritto un programma in Scala (consideralo Java se non conosci Scala) per implementarlo. Ma forse ci sono strumenti nativi scritti in C più veloci in grado di farlo più velocemente?

AGGIORNAMENTO:il nome del file awk '!seen[$0]++' filename la soluzione sembrava funzionare bene per me fintanto che i file erano vicini a 2 GiB o più piccoli ma ora, dato che devo ripulire un file da 8 GiB, non funziona più. Sembra che ci voglia l'infinito su un Mac con 4 GiB di RAM e un PC Windows 7 a 64 bit con 4 GiB di RAM e 6 GiB di swap esaurisce la memoria. E non sono entusiasta di provarlo su Linux con 4 GiB di RAM vista questa esperienza.

Risposta accettata:

Un awk soluzione vista su #bash (Freenode):

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

Linux
  1. Rimuovi le righe vuote in un file di testo tramite grep

  2. Come rimuovo le nuove righe da un file di testo?

  3. Come usare sed per rimuovere le ultime n righe di un file

  4. Come si aggiunge del testo a un file?

  5. Come troncare il file per righe?

Come stampare righe duplicate in un file di testo in Linux

Come rimuovere le righe da un file usando il comando Sed

Come rimuovere tutti i caratteri di spazio bianco da un file di testo

Come rimuovere le righe vuote da un file (inclusi tabulazione e spazi)?

Rimuovere in modo efficiente le prime due righe da un file di testo?

Come creare disegni ASCII in Vim Editor (disegna riquadri, linee, ellissi, frecce all'interno del file di testo)