![두 개의 파일을 연결합니다. 각 파일에는 두 개의 열이 있으며 여러 열이 일치합니다.](https://linux55.com/image/98897/%EB%91%90%20%EA%B0%9C%EC%9D%98%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%97%B0%EA%B2%B0%ED%95%A9%EB%8B%88%EB%8B%A4.%20%EA%B0%81%20%ED%8C%8C%EC%9D%BC%EC%97%90%EB%8A%94%20%EB%91%90%20%EA%B0%9C%EC%9D%98%20%EC%97%B4%EC%9D%B4%20%EC%9E%88%EC%9C%BC%EB%A9%B0%20%EC%97%AC%EB%9F%AC%20%EC%97%B4%EC%9D%B4%20%EC%9D%BC%EC%B9%98%ED%95%A9%EB%8B%88%EB%8B%A4..png)
파일이 두 개 있어요
파일 A
MUREX_2089975 :SBE Zinc Non-Option 118510 metals USD -308410
MUREX_2097300 :SBE Zinc Non-Option 118510 metals USD 7751
MUREX_2097474 :SBE Zinc Non-Option 118510 metals USD -140062
MUREX_2097928 :SBE Zinc Non-Option 118510 metals USD 46504
MUREX_2099168 :SBE Zinc Non-Option 118510 metals USD 38906
MUREX_2102690 :SBE Zinc Non-Option 118510 metals USD -139992
MUREX_2106241
MUREX_2106570
MUREX_2106577
MUREX_2107869
MUREX_748219 :SBE Zinc Non-Option 118510 metals USD 7743
MUREX_777665 :SBE Zinc Non-Option 118510 metals USD 7750
MUREX_778819 :SBE Zinc Non-Option 118510 metals USD 7743
문서 B
MUREX_2089975 :SBE Zinc Non-Option 118510 metals USD -296889
MUREX_2097300 :SBE Zinc Non-Option 118510 metals USD 7450
MUREX_2097474
MUREX_2097928 :SBE Zinc Non-Option 118510 metals USD 44699
MUREX_2099168
MUREX_2102690 :SBE Zinc Non-Option 118510 metals USD -134474
MUREX_2106241 :SBE Zinc Non-Option 118510 metals USD 7450
MUREX_2106570 :SBE Zinc Non-Option 118510 metals USD -14942
MUREX_2106577 :SBE Zinc Non-Option 118510 metals USD -14942
MUREX_2107869 :SBE Zinc Non-Option 118510 metals USD 7450
MUREX_748219 :SBE Zinc Non-Option 118510 metals USD 7444
MUREX_777665 :SBE Zinc Non-Option 118510 metals USD 7453
MUREX_778819 :SBE Zinc Non-Option 118510 metals USD 7444
내가 사용하는 코드:
join -t, -j 1 -a 1 -a 2 -o auto FileA FileB
내가 원하는 것은 기본적으로 각 파일의 6열을 비교하면서 1열부터 5열까지 완전히 채우는 것입니다.
예상되는 결과
MUREX_2089975 :SBE Zinc Non-Option 118510 metals USD -308410 -296889
MUREX_2097300 :SBE Zinc Non-Option 118510 metals USD 7751 7450
MUREX_2097474 :SBE Zinc Non-Option 118510 metals USD -140062
MUREX_2097928 :SBE Zinc Non-Option 118510 metals USD 46504 44699
MUREX_2099168 :SBE Zinc Non-Option 118510 metals USD 38906
MUREX_2102690 :SBE Zinc Non-Option 118510 metals USD -139992 -134474
MUREX_2106241 :SBE Zinc Non-Option 118510 metals USD 7450
MUREX_2106570 :SBE Zinc Non-Option 118510 metals USD -14942
MUREX_2106577 :SBE Zinc Non-Option 118510 metals USD -14942
MUREX_2107869 :SBE Zinc Non-Option 118510 metals USD 7450
MUREX_748219 :SBE Zinc Non-Option 118510 metals USD 7743 7444
MUREX_777665 :SBE Zinc Non-Option 118510 metals USD 7750 7453
MUREX_778819 :SBE Zinc Non-Option 118510 metals USD 7743 7444
실제 결과
MUREX_2089975 :SBE Zinc Non-Option 118510 metals USD -308410 :SBE Zinc Non-Option 118510 metals USD -296889
MUREX_2097300 :SBE Zinc Non-Option 118510 metals USD 7751 :SBE Zinc Non-Option 118510 metals USD 7450
MUREX_2097474 :SBE Zinc Non-Option 118510 metals USD -140062
MUREX_2097928 :SBE Zinc Non-Option 118510 metals USD 46504 :SBE Zinc Non-Option 118510 metals USD 44699
MUREX_2099168 :SBE Zinc Non-Option 118510 metals USD 38906
MUREX_2102690 :SBE Zinc Non-Option 118510 metals USD -139992 :SBE Zinc Non-Option 118510 metals USD -134474
MUREX_2106241 :SBE Zinc Non-Option 118510 metals USD 7450
MUREX_2106570 :SBE Zinc Non-Option 118510 metals USD -14942
MUREX_2106577 :SBE Zinc Non-Option 118510 metals USD -14942
MUREX_2107869 :SBE Zinc Non-Option 118510 metals USD 7450
MUREX_748219 :SBE Zinc Non-Option 118510 metals USD 7743 :SBE Zinc Non-Option 118510 metals USD 7444
MUREX_777665 :SBE Zinc Non-Option 118510 metals USD 7750 :SBE Zinc Non-Option 118510 metals USD 7453
MUREX_778819 :SBE Zinc Non-Option 118510 metals USD 7743 :SBE Zinc Non-Option 118510 metals USD 7444
edit1: 데이터가 실제로 어떻게 보이는지에 대한 예:
MUREX_990422,:SBE Zinc Non-Option,118510,metals,USD,15501
답변1
직접적으로 할 수는 없을 것 같아요가입하다. 당신이 할 수 있는 일은 먼저 모든 키와 열 1-5가 포함된 파일을 추출하여 각 행의 시작으로 사용하는 것입니다. 그런 다음 사용할 수 있습니다가입하다두 숫자를 모두 끝에 넣으세요.
조인 필드만 포함된 행은 실제로 어떤 모습일까요? 그냥 필드인가요, 아니면 뒤에 쉼표가 있는 필드인가요? 전자의 경우에는 할 수 있습니다
awk -F , 'NF > 1 {print}' fileA fileB | cut -d, -f1-5 | sort -u | \
join -t, -o 0,1.2,1.3,1.4,1.5,2.6 - fileA | \
join -t, -o 0,1.2,1.3,1.4,1.5,1.6,2.6 - fileB