동일한 행 수를 가진 두 개의 CSV를 연결하는 방법

동일한 행 수를 가진 두 개의 CSV를 연결하는 방법

동일한 행 수를 가진 두 개의 정렬된 CSV 파일이 있습니다. 이 두 개의 CSV 파일을 결합하고 싶습니다.

1.csv
1,2,3
4,5,6
7,8,9

2.csv
10,11,12
13,14,15
16,17,18

result.csv
1,2,3,10,11,12
4,5,6,13,14,15
7,8,9,16,17,18

시도했지만 cat 1.csv 2.csv >result.csv 참여하는 대신 추가됩니다.

답변1

위치 paste:

paste -d, {1,2}.txt

-d,구분 기호를 ,. 로 설정하는 {1,2}.txt것은 셸에서 수행되는 중괄호 확장이며 1.txt 2.txt.


당신이 조금 좋아한다면 awk:

awk 'NR==FNR {a[FNR]=$0; next} {print a[FNR], $0}' OFS=, {1,2}.txt
  • NR==FNR첫 번째 파일에만 적용됩니다. 레코드 번호를 키로, 레코드를 값으로 사용하여 {a[FNR]=$0; next}배열을 생성합니다.a

  • 두 번째 파일의 경우 {print a[FNR], $0}해당 줄 번호에 배열 요소를 인쇄하고 그 뒤에 OFS=,출력 필드 구분 기호를 다음과 같이 설정합니다 .,

예:

$ cat 1.txt 
1,2,3
4,5,6
7,8,9

$ cat 2.txt 
10,11,12
13,14,15
16,17,18

$ paste -d, {1,2}.txt
1,2,3,10,11,12
4,5,6,13,14,15
7,8,9,16,17,18

$ awk 'NR==FNR {a[FNR]=$0; next} {print a[FNR], $0}' OFS=, {1,2}.txt
1,2,3,10,11,12
4,5,6,13,14,15
7,8,9,16,17,18

관련 정보