2010-06-02 4 views
3

거대한 (4,5 GB) csv 파일이 있습니다 .. 기본 잘라 내기 및 붙여 넣기를 수행하고 일부 열의 작업을 바꿔야합니다. 데이터가 잘 정리되어 있습니다. . 유일한 문제는 크기 (2000 행, 550000 열) 때문에 Excel에서 재생할 수 없다는 것입니다. 여기 거대한 CSV 파일 읽기/쓰기/찾기/바꾸기

는 데이터의 일부입니다 :

내가 4, 5, 6, 7, 8 및 9 열을 제거 할 필요가
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 

; 열 10부터 모든 _ 문자를 찾고 space() 문자로 바꿔야합니다. 매번 교체해야합니까? 제로 (0); 모든 쉼표를 탭으로 바꿔야합니다. 첫 번째 행을 제거해야합니다 (열 이름이 있습니다 : 모든 0을 1로, 1을 2로, 모든 열을 2 열로 0으로 바꿔야 함) F를 2, M을 1로 대체해야합니까? 3 열의 0] 그래서

그 결과 파일에 출력 읽

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 추가적인 빈 행을 판독한다) 그 방법은 자바로 (그리고 내가 할 코드가 필요함) 또는이 큰 데이터를 가지고 놀기에 유용한 툴을 사용해서 쉽게 Excel 기능을 적용 할 수있다.

+1

[나오지과 AWK (http://www.faqs.org/ docs/abs/HTML/sedawk.html) – miku

+1

단순히 데이터 행을 읽지 않고 쉼표로 구분 된 것으로 구문 분석하고 원하는 작업을 수행 한 다음 쉼표로 구분 된 새 줄을 새 파일에 쓰고 1 단계로 돌아가십시오. 깨끗이하면 쉼표로 라인을 분할하거나 기본 CSV 규칙으로 구문 분석하거나 정규식이 작동 할 수도 있습니다. 나는 그렇게 어려운 일이 보이지 않습니까? –

답변

1

당신은 두 가지가 필요합니다
-
정규 표현식의 지식 (일명 정규식, 정규 표현식에) - 당신은 같은 도구를 고려할 수 PowerGrep