Baca/Tulis/Temukan/Ganti file csv besar

Saya memiliki file csv yang sangat besar (4,5 GB).. Saya perlu melakukan potong dan tempel dasar, mengganti operasi untuk beberapa kolom.. datanya cukup terorganisir dengan baik.. satu-satunya masalah adalah saya tidak dapat memainkannya dengan Excel karena ukurannya (2000 baris, 550.000 kolom).

berikut beberapa bagian datanya:

ID,Affection,Sex,DRB1_1,DRB1_2,SENum,SEStatus,AntiCCP,RFUW,rs3094315,rs12562034,rs3934834,rs9442372,rs3737728

D0024949,0,F,0101,0401,SS,yes,?,?,A_A,A_A,G_G,G_G
D0024302,0,F,0101,7,SN,yes,?,?,A_A,G_G,A_G,?_?
D0023151,0,F,0101,11,SN,yes,?,?,A_A,G_G,G_G,G_G

Saya perlu menghapus kolom ke-4, ke-5, ke-6, ke-7, ke-8 dan ke-9; Saya perlu menemukan setiap karakter _ dari kolom 10 dan seterusnya dan menggantinya dengan karakter spasi (); Saya perlu mengganti setiap? dengan nol (0); Saya perlu mengganti setiap koma dengan tab; Saya perlu menghapus baris pertama (yang memiliki nama kolom; saya perlu mengganti setiap 0 dengan 1, setiap 1 dengan 2 dan setiap ? dengan 0 di kolom ke-2; saya perlu mengganti F dengan 2, M dengan 1 dan ? dengan 0 di kolom ke-3;

sehingga pada file yang dihasilkan outputnya berbunyi:

D0024949 1 2 A A A A G G G G

D0024302 1 2 A A G G A G 0 0

D0023151 1 2 A A G G G G G G

(baik input dan output harus membaca satu baris per baris, bukan baris kosong tambahan) Apakah ada cara yang efisien memori untuk melakukan itu dengan Java (dan saya memerlukan kode untuk melakukan itu) atau alat yang dapat digunakan untuk bermain dengan data besar ini sehingga Saya dapat dengan mudah menerapkan fungsionalitas Excel..


person notapipe    schedule 02.06.2010    source sumber
comment
Anda dapat mempertimbangkan alat seperti sed dan awk   -  person miku    schedule 02.06.2010
comment
Mengapa tidak membaca baris data saja, parsing sebagai dipisahkan koma, lakukan tindakan yang diinginkan, tulis baris baru yang dipisahkan koma ke file baru, kembali ke langkah 1. Jika data Anda bersih maka Anda cukup membagi baris dengan koma atau parsing dengan aturan csv dasar atau bahkan regex mungkin berhasil. Saya tidak mengerti apa yang begitu sulit?   -  person    schedule 02.06.2010


Jawaban (1)


Anda memerlukan dua hal:
- Pengetahuan tentang Ekspresi Reguler (alias Regex, Regex)
- PowerGrep

person PeterM    schedule 02.06.2010