GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Menghapus Garis Duplikat Di Dalam File Teks?

File teks saya yang sangat besar (hingga 2 GiB) berisi sekitar 100 duplikat persis dari setiap baris di dalamnya (tidak berguna dalam kasus saya, karena file tersebut adalah tabel data seperti CSV).

Yang saya butuhkan adalah menghapus semua pengulangan sementara (lebih disukai, tetapi ini dapat dikorbankan untuk peningkatan kinerja yang signifikan) mempertahankan urutan urutan asli. Hasilnya, setiap baris harus unik. Jika ada 100 baris yang sama (biasanya duplikatnya tersebar di seluruh file dan tidak akan bertetangga) hanya ada satu baris yang tersisa.

Saya telah menulis sebuah program di Scala (anggap saja Java jika Anda tidak tahu tentang Scala) untuk mengimplementasikannya. Tetapi mungkin ada alat asli yang ditulis dengan C yang lebih cepat yang dapat melakukan ini lebih cepat?

PEMBARUAN:nama file awk '!seen[$0]++' filename solusi tampaknya berfungsi dengan baik untuk saya selama file mendekati 2 GiB atau lebih kecil, tetapi sekarang karena saya akan membersihkan file 8 GiB, itu tidak berfungsi lagi. Tampaknya mengambil tak terhingga pada Mac dengan 4 GiB RAM dan 64-bit Windows 7 PC dengan 4 GiB RAM dan 6 GiB swap hanya kehabisan memori. Dan saya tidak merasa antusias untuk mencobanya di Linux dengan RAM 4 GiB mengingat pengalaman ini.

Jawaban yang Diterima:

Sebuah awk solusi terlihat di #bash (Freenode):

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

Linux
  1. Bagaimana Menghapus Baris Kosong Dari File (termasuk Tab Dan Spasi)?

  2. Hapus Beberapa Baris Pertama Secara Efisien Dari File Teks?

  3. Cara menghapus kata duplikat dari file teks biasa menggunakan perintah linux

  1. Bagaimana cara menambahkan teks ke file?

  2. Hapus baris ganjil atau genap dari file teks

  3. Bagaimana cara memotong file per baris?

  1. 7 Contoh Perintah Linux Uniq untuk Menghapus Baris Duplikat dari File

  2. Bagaimana cara menghapus file tanpa menggunakan rm?

  3. Bagaimana cara menampilkan baris tertentu dari file teks di Linux?