Чтение/запись/найти/заменить огромный CSV-файл

У меня есть огромный (4,5 ГБ) CSV-файл. Мне нужно выполнить базовые операции вырезания и вставки, заменить операции для некоторых столбцов. Данные довольно хорошо организованы. Единственная проблема в том, что я не могу играть с ними в Excel, потому что размера (2000 строк, 550000 столбцов).

вот некоторая часть данных:

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

Мне нужно удалить 4-й, 5-й, 6-й, 7-й, 8-й и 9-й столбцы; Мне нужно найти каждый символ _ из столбца 10 и далее и заменить его символом пробела ( ); Мне нужно заменить каждый ? с нулем (0); Мне нужно заменить каждую запятую табуляцией; Мне нужно удалить первую строку (с именами столбцов; мне нужно заменить каждый 0 на 1, каждый 1 на 2 и каждый? на 0 во втором столбце; мне нужно заменить F на 2, M на 1 и ? на 0 в 3-й столбец;

так что в результирующем файле вывод читается:

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

(и ввод, и вывод должны считывать одну строку в строке, ne дополнительная пустая строка) Есть ли эффективный способ сделать это с помощью java (и мне нужен код для этого) или полезный инструмент для игры с этими большими данными, чтобы Я могу легко применить функциональность Excel.


person notapipe    schedule 02.06.2010    source источник
comment
можно использовать такие инструменты, как sed и awk.   -  person miku    schedule 02.06.2010
comment
Почему бы просто не прочитать строку данных, выполнить синтаксический анализ с разделителями-запятыми, выполнить нужные действия, записать новую строку с разделителями-запятыми в новый файл, вернуться к шагу 1. Если ваши данные чисты, вы можете просто разделить строку на запятую или проанализируйте с помощью основных правил csv, или даже регулярное выражение может работать. не понимаю, что тут сложного?   -  person    schedule 02.06.2010


Ответы (1)


Вам потребуются две вещи:
– Знание регулярных выражений (также называемых регулярными выражениями, регулярными выражениями)
PowerGrep

person PeterM    schedule 02.06.2010