쉘 명령을 사용하여 두 파일의 공통 행을 인쇄하십시오.

쉘 명령을 사용하여 두 파일의 공통 행을 인쇄하십시오.

예를 들어 두 개의 파일이 있습니다. 파일 1에는 다음이 포함됩니다.

12
13
14
15

파일 2에는 다음이 포함됩니다.

13,abc,xyz
14,def,ghi
15,klm,opq

file3의 예상 출력:

13,abc,xyz
14,def,ghi
15,klm,opq

저는 Linux 컴퓨터를 사용하고 있습니다. 순서는 무엇입니까?

답변1

엄밀히 말하면 우리는 공통점에 관심이 없습니다.철사(주어진 데이터에 공통선이 없음) 그러나 첫 번째 열의 데이터를 기반으로 한 교차점에 있습니다.

사용 join:

$ join -t, File1 File2
13,abc,xyz
14,def,ghi
15,klm,opq

유틸리티 join회사는 효과적인관계(내부) 조인각각 고유한 필드(기본적으로 첫 번째 필드)가 있는 두 파일 간의 작업입니다. 나는 이것을 사용하여 -t ,쉼표가 파일의 필드 구분 기호임을 나타냅니다(그렇지 않으면 공백을 사용합니다). 기본적으로 이 명령은 두 파일의 첫 번째 필드를 기반으로 교차점을 생성합니다.

질문에 있는 것으로 보이는 조인 필드(첫 번째 열)에서 두 파일을 모두 정렬해야 합니다. 정렬되지 않은 경우 다음을 사용하여 즉시 정렬할 수 있습니다.

join -t, <( sort File1 ) <( sort File2 )

쉘이 프로세스 대체를 지원하는 경우.

관련 정보