2015-02-02 2 views
3

나는 각각 500 행 및 1000 열 (~ 20MB)의 ~ 500 CSV 파일을 가지고 있습니다. 열 단위로 추가하고 큰 CSV 파일로 저장하고 싶습니다.많은 대형 CSV 파일 병합 (Linux)

이전 게시물이 부분적으로 대답했습니다. Merge multiple csv files awk column-wise, no match

그러나 모든 파일 이름을 쓰지 않고이 작업을 수행 할 수있는 방법이 있습니까? 도움이 될 경우 내 파일의 이름이 순차적입니다 (예 : X1.csv, X2.csv, X3.csv, ..., X500.csv).

답변

4

그냥 예를 들어, 세 개의 같은 파일이 있다고 가정 :

$ cat X1.csv 
A,B 
A,B 
A,B 
$ cat X2.csv 
C 
C 
C 
$ cat X3.csv 
D 
D 
D 

우리는 각각의 파일 이름을 지정하지 않고, 쉼표로 구분 된 형식으로, 라인별로 라인을 병합 할 :

$ paste -d, X{1..3}.csv 
A,B,C,D 
A,B,C,D 
A,B,C,D 

-d,은 파일을 병합 할 때 쉼표를 구분 기호로 사용합니다 (paste). bash에서 표현식 X{1..3}.csv은 숫자 순으로 파일 시퀀스로 확장됩니다. 당신이 500 개 이러한 파일을 가지고 있다면

명령은 다음과 같습니다

paste -d, X{1..500}.csv 

가 출력 파일에 저장하려면 : 당신이 반복적으로 명명 된 파일을 축소 할 수있는 다음과 같은 쉘 스크립트와

paste -d, X{1..500}.csv >merged.csv 
+1

그 놀라운 그냥 가르쳐 무엇을, 나는 시간에 큰 로그 파일 시간을 병합 할이, 내 친구가 나를 위해 보물입니다! –

0

,

#!/bin/sh 

a=500 

while [ $a -gt 500 ] 
do 
    paste -d' ' Xtemp X$a > Xtemp 
    a=`expr $a + 1` 
done