2016-10-15 3 views
-1

세 파일의 첫 번째 열을 비교하고 싶습니다. 일치하는 경우, 나는 fil3의 두 번째 열에서 file2와 다섯 번째 열의 4 번째 열로 출력을 인쇄하고 싶습니다. 일치하는 항목이 없으면 출력의 4 번째 및 5 번째 열에 0이 추가됩니다.하나의 coumn을 기반으로 3 열에 가입하는 방법

file1.txt 
     123,apple,goodquality 
     456,orange,mediumquality 
     678,grape,lowquality 
    786,kiwi,goodquality 

file2.txt 
123,55 
678,2 

file3.txt 
456,10 

output.txt 
123,apple,goodquality,55,0 
456,orange,mediumquality,0,10 
678,grape,lowquality,2,0 

join 명령을 사용하여 3 개의 파일 모두에서 column1 값이 사용 가능하면 잘 작동합니다.

답변

0

첫 번째 두 파일을 결합한 다음 세 번째 파일과 결합해야합니다. 0을 기본 필드 값으로하여 외부 조인을 수행하기 위해 조인에 대한 몇 가지 추가 옵션이 필요합니다. 다음, 파일이 이미 첫 번째 필드에 의해 전적으로을 를 분류되어 가정 :

join -t , -a 1 -a 2 -e 0 -o 0,1.2,2.1  file1.txt file2.txt | 
join -t , -a 1 -a 2 -e 0 -o 0,1.2,1.3,2.1 -   file3.txt 

출력

123,apple,123,0 
456,orange,0,456 
678,grape,678,0 
786,kiwi,0,0 

을 그리고 당신은 다음 2 개 0 값,

있는을위한 마지막 줄을 제외 할 경우
join -t, -a 1 -a 2 -e 0 -o 0,1.2,2.1  file1.txt file2.txt | 
join -t, -a 1 -a 2 -e 0 -o 0,1.2,1.3,2.1 -   file3.txt | 
sed '/,0,0$/d' 
+0

이러한 매개 변수를 조인 명령에 사용하지는 않았지만 동일한 설명을 해주십시오. 또는 탐색 할 링크를 공유하십시오. 고마워요 @ 글렌 –

+0

맨 페이지로 시작 –

+0

하지만 출력 3 열이 누락되었습니다 –

관련 문제