![공통 열에 두 개의 CSV 파일을 연결하고 두 번째에서 마지막 열을 제거합니다.](https://linux55.com/image/144251/%EA%B3%B5%ED%86%B5%20%EC%97%B4%EC%97%90%20%EB%91%90%20%EA%B0%9C%EC%9D%98%20CSV%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%97%B0%EA%B2%B0%ED%95%98%EA%B3%A0%20%EB%91%90%20%EB%B2%88%EC%A7%B8%EC%97%90%EC%84%9C%20%EB%A7%88%EC%A7%80%EB%A7%89%20%EC%97%B4%EC%9D%84%20%EC%A0%9C%EA%B1%B0%ED%95%A9%EB%8B%88%EB%8B%A4..png)
두 개의 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)