공통 열에 두 개의 CSV 파일을 연결하고 두 번째에서 마지막 열을 제거합니다.

공통 열에 두 개의 CSV 파일을 연결하고 두 번째에서 마지막 열을 제거합니다.

두 개의 CSV 파일이 있습니다.

파일 1:

C1, 1, 0, 1, 0, 1
C2, 1, 0, 1, 1, 0
C3, 0, 0, 1, 1, 0

파일 2:

C3, 1.2
C1, 2.3
C2, 1.8

C열(생성됨)을 기준으로 이 두 파일을 병합하고 싶습니다.

C1, 1, 0, 1, 0, 1, 2.3
C2, 1, 0, 1, 1, 0, 1.8
C3, 0, 0, 1, 1, 0, 1.2

그런 다음 생성을 위해 두 번째 열을 제거합니다.

C1, 1, 0, 1, 0, 2.3
C2, 1, 0, 1, 1, 1.8
C3, 0, 0, 1, 1, 1.2

답변1

C열의 두 번째 파일에 해시 맵을 생성하고 아래와 같이 첫 번째 파일에 사용하면 됩니다. 다음 작업은 FNR==NR마지막으로 지정된 첫 번째 파일에 적용되고 후속 작업은 마지막 파일에서 발생합니다. 이는 awk, 및 FNR의 특수 변수가 NR각각 파일당 및 파일 전체의 줄 번호를 추적하기 때문입니다 .

awk -v FS="," -v OFS="," 'FNR==NR { unique[$1]=$2; next } $1 in unique { $NF=unique[$1]; }1' file2 file1

답변2

또한 시도

join -t, -o1.1,1.2,1.3,1.4,1.5,2.2 <(sort file1) <(sort file2)

관련 정보