2016-09-19 3 views
1

크기가 4.5GB 인 CSV가 있습니다. 이 CSV를 열 기반의 다른 파일로 분리하고 싶습니다. 예 :대용량 CSV를 열별로 여러 파일로 분할

File1.csv: Cols(1,35,36,37)  
File2.csv: Cols(1,127,129,135) 
File3.csv: Cols(1,285,287,299,311) 
File4.csv: Cols(1,2,4,5,6,12,13,14) 

** 참고 열 1은 전체적으로 필요한 ID 열입니다.

필자는 328 개의 열을 포함하는이 CSV를 본질적으로 MySQL의 가져 오기를위한 더 작은 CSV로 분해하려고합니다.

여러 awk 명령으로이 작업을 쉽게 수행 할 수 있지만 각 명령에 4.5GB-6GB 파일 전체를 다시 처리하고 싶지는 않습니다. 어떤 제안?

답변

2

AWK 내에서 다른 파일에 printredirect output 할 수 있습니다 : AWK : 1 : 이것은 불행하게도 오류가 발생

awk '{print $1, $35, $36, $37 > "file1.csv"} \ 
    {print $1, $127, $129, $135 > "file2.csv"} \ 
    {print $1, $285, $287, $299, $311 > "file3.csv"}\ 
    {print $1, $2, $4, $5, $6, $12, $13, $14 > "file4.csv"}' inFile.csv 
+0

'.'예상치 못한 문자를 – Mrd05d

+0

@ Mrd05d : 다른 두 파일에 대한'print' 명령으로'...'를 대체해야합니다. –

+0

아 ... 네, 그게 @ Mrd05d에 대해 유감스럽게 생각합니다. 나는 게으르며 더 이상 타이핑하는 것을 느끼지 않았습니다. awk 리디렉션의 요지를 알아 내고 거기에서 가져갈 것이라고 생각했습니다. :) – JNevill

관련 문제