큰 csv 파일과 작은 csv 파일 사이의 3개 열을 일치시켜 출력 파일에 쓰고 있습니다. 여기에는 유용한 질문이 많이 있지만 현재 겪고 있는 특정 문제에 대한 답변을 찾을 수 없습니다. 열 항목이 더 짧으면 일치 항목을 찾을 수 없습니다.
내 솔루션은 다음 솔루션을 기반으로 합니다.서로 다른 파일의 두 열을 비교하고 일치하면 인쇄합니다.
일치하는 열은 small1 == Large120002, small2 == Large120003, small3 == Large120004여야 합니다.
나는 무엇을 노력하고 있습니까?
awk -F, 'NR==FNR{c[$1,$2,$3]++;next};c[$120002,$120003,$120004] > 0' small.csv large.csv > output.csv
이런 종류의 작품입니다. 여기에는 Large120002가 9자 미만 길이의 int인 행은 포함되지 않습니다. (지금까지 Large120002의 값은 7~9자 길이였습니다.)
이전에 이 문제가 발생한 적이 있나요? 가능하다면 awk 솔루션을 고수하고 싶습니다.
답변1
변환 문제인 것으로 밝혀졌으므로 awk가 둘 다 동일하게 처리하는지 확인하기 위해 열에 0을 추가했습니다.
의 도움으로:https://stackoverflow.com/questions/5808971/casting-to-int-in-awk
드디어 성공했습니다..
awk -F, 'NR==FNR{c[$1+0,$2,$3]++;next};c[$120002+0,$120003,$120004] > 0' small.csv large.csv > output.csv