열 1 일치를 기반으로 csv 파일의 행을 다른 파일에 추가합니다.

열 1 일치를 기반으로 csv 파일의 행을 다른 파일에 추가합니다.

2개의 .csv 파일(file1.csv 및 file2.csv)이 있습니다. file2.csv의 행에 file1.csv의 행과 동일한 첫 번째 필드가 있다고 가정합니다. file1.csv의 전체 행이 file2.csv의 전체 행을 대체하고 싶습니다. file2에서 줄을 삭제하고 file1에서 줄을 추가하는 스크립트를 사용해 보았습니다. 일치 항목이 포함되지 않은 file2의 행을 깨우고 file1에서 추가하려고 시도했지만 실패했습니다.

파일 1.csv:

1,2,3
2,3,4
3,4,5

파일 2.csv

6,7,8
7,8,9
1,9,0

원하는 결과:

6,7,8
7,8,9
1,2,3

답변1

게시한 간단한 입력 파일의 경우:

$ awk -F, 'NR==FNR {a[$1]=$0; next} $1 in a {$0=a[$1]} 1' file1.csv file2.csv
6,7,8
7,8,9
1,2,3

일반적으로 CSV 형식은 간단한 Awk 스크립트를 부적합하게 만들 수 있는 따옴표가 포함된 구분 기호 및 기타 불쾌한 항목을 허용합니다.

관련 정보