두 파일의 첫 번째 열과 두 번째 열을 비교하고 일치하면 두 번째 파일의 줄을 인쇄합니다.

두 파일의 첫 번째 열과 두 번째 열을 비교하고 일치하면 두 번째 파일의 줄을 인쇄합니다.

다음 질문에 대한 답변을 살펴보았지만 아래와 같은 예상 결과를 얻을 수 없었습니다.

두 파일의 첫 번째 열을 비교하고 첫 번째 열이 일치하면 두 번째 파일의 전체 줄을 인쇄합니다.

파일 1

CLASS|124655
CLASS|124656
CLASS|124657
CLASS|124658

파일 2

CLASS|124655|STEVE|SMITH||
CLASS|124656|ROGERS|KNIGHT||
CLASS|124657|MITCHELL|BRADFORD||
CLASS|124657||||1236536
CLASS|124658|NORMAN|JONES||
CLASS|124658||||1236539
CLASS|124665|JEFF|JONES||
CLASS|124665||||1236556

예상 출력

CLASS|124655|STEVE|SMITH||
CLASS|124656|ROGERS|KNIGHT||
CLASS|124657|MITCHELL|BRADFORD||
CLASS|124657||||1236536
CLASS|124658|NORMAN|JONES||
CLASS|124658||||1236539

grep -f file1 file2를 시도했지만 커널에 의해 종료되어 처리하는 데 너무 오래 걸렸습니다. 파일 1과 파일 2 모두 100만 개가 넘는 레코드를 가지고 있습니다.

답변1

한 가지 awk해결책은 다음과 같습니다.

$ awk -v FS="|" 'NR==FNR {get[$1"|"$2]++; next} get[$1"|"$2]' f1.txt f2.txt

이것이 백만 개의 레코드에 작동하는지 확실하지 않습니다.

관련 정보