comm cmd를 사용하여 일반 텍스트를 한 줄로 인쇄하시겠습니까?

comm cmd를 사용하여 일반 텍스트를 한 줄로 인쇄하시겠습니까?

숫자_ID, 상태, 설명이 포함된 파일이 2개 있습니다. 숫자를 기준으로 이 두 파일을 결합하고 싶습니다.

number_123, status1, status2 

내 파일 1:

number_123,this car is under maintenance  
number_345,this car checked is done
number_356,this car is under main 

내 파일 2:

number_123,hold  
number_345,done 

두 파일의 기존 숫자를 다음과 같이 연결합니다.

number_123,hold,this car is under maintenance    
number_345,done,this car checked is done 

공통 번호를 찾기 위해 comm file1 file2를 사용했는데 파일은 다음과 같습니다.

number_123,this car is under maintenance 
number_123,hold 
number_345,this car checked is done
number_345,done

한 줄로 인쇄하려면 어떻게 해야 하나요?

 number_123,hold,this car is under maintenance    
 number_345,done,this car checked is done 

답변1

comm유틸리티는 파일 간의 전체 행을 비교하는 데 사용됩니다. 당신이 원하는 것은 특정 분야에 참여하는 것뿐입니다.

$ join -t, file2 file1
number_123,hold,this car is under maintenance
number_345,done,this car checked is done

이는 두 파일이 모두 조인 필드(각 파일에서 쉼표로 구분된 첫 번째 열)를 기준으로 정렬되어 있다고 가정합니다.

파일이 정렬되지 않은 경우 다음을 사용하여 미리 정렬할 수 있습니다.

sort -t, -k1,1 -o file1 file1
sort -t, -k1,1 -o file2 file2

에서 ksh93또는 "즉시" 정렬할 수도 있습니다 bash.zsh

join -t, <( sort -t, -k1,1 file2 ) <( sort -t, -k1,1 file1 )

관련 정보