첫 번째 열을 기준으로 2개의 서로 다른 파일 일치

첫 번째 열을 기준으로 2개의 서로 다른 파일 일치

그래서 두 개의 다른 파일이 있습니다.

파일 1.txt는 다음과 같습니다.

abcdefjeiireiiioe:data:otherdata  
rijirjeiwrieeoooe:datamore:otherdatamore  

파일 2.txt는 다음과 같습니다.

abcdefjeiireiiioe:data:otherotherdata  
rijirjeiwrieeoooe:datamore:otherotherdatamore      
*other random lines which do not occur in file1.txt also and are not needed

다음과 같이 보이도록 같은 줄에 인쇄하려면 어떻게 해야 합니까?

abcdefjeiireiiioe:data:otherdata:data:otherotherdata

답변1

두 번째 행도 병합하고 싶다고 가정합니다. 당신은 그것을 사용할 수 있습니다 join:

join -t : file1 file2

이는 구문 분석 file1되어 구분 기호 file2로 사용되며 :첫 번째 필드가 일치하는 줄을 병합합니다. 기본적으로 일치하지 않는 행은 무시되고 출력에 표시되지 않습니다.

입력 파일은 조인 필드에서 정렬되어야 합니다. 그렇지 않은 경우 다음과 같이 전처리할 수 있습니다.

join -t : <(sort -k 1,1 -t : file1) <(sort -k 1,1 -t : file2)

또는 정렬 확인을 무시해 볼 수도 있습니다.

join -t : --nocheck-order file1 file2

관련 정보