다른 텍스트 파일의 두 열을 기반으로 파일에서 행 추출

다른 텍스트 파일의 두 열을 기반으로 파일에서 행 추출

현재 다음과 같은 두 개의 파일이 있습니다.

파일 1:

2R 101 1:0:0:14:0:0 0:1:0:34:0:0 0:3:0:62:0:0 0:0:0:11:0:0 .02312
2R 201 0:2:0:24:0:0 0:0:0:44:0:0 0:0:0:15:0:0 0:0:0:22:0:0 .02312
2L 301 0:4:0:24:0:0 0:0:0:61:0:0 0:0:0:17:0:0 0:0:0:54:2:0 .02312
3R 551 0:2:0:64:0:1 0:1:0:67:0:0 0:0:0:22:0:0 0:0:0:31:1:0 .02312
3R 651 0:2:0:64:0:1 0:1:0:67:0:0 0:0:0:22:0:0 0:0:0:31:1:0 .02312
X 1312 0:0:3:24:0:0 0:5:0:65:0:0 0:0:0:55:0:0 0:0:0:14:0:0 .02312
X 5342 0:0:3:24:0:0 0:5:0:65:0:0 0:0:0:55:0:0 0:0:0:14:0:0 .02312

파일 2:

2R 201
3R 551
X 5342

내가 원하는 것은 File1에서 처음 두 열의 항목이 File2의 행과 일치하는 모든 행을 추출하는 것입니다. 따라서 이 예를 기반으로 출력 파일을 다음과 같이 만들고 싶습니다.

결과물 파일:

2R 201 0:2:0:24:0:0 0:0:0:44:0:0 0:0:0:15:0:0 0:0:0:22:0:0 .02312
3R 551 0:2:0:64:0:1 0:1:0:67:0:0 0:0:0:22:0:0 0:0:0:31:1:0 .02312
X 5342 0:0:3:24:0:0 0:5:0:65:0:0 0:0:0:55:0:0 0:0:0:14:0:0 .02312

답변1

파일 2가 이라고 가정하면 A데이터 파일(파일 1)은 다음과 같습니다.b

 awk 'FILENAME == "A" { remember[$1 $2]=1 ;}
 FILENAME != "A" { if ( $1 $2 in remember ) print ; } ' A b

이것은 생산할 것입니다

2R 201 0:2:0:24:0:0 0:0:0:44:0:0 0:0:0:15:0:0 0:0:0:22:0:0 .02312
3R 551 0:2:0:64:0:1 0:1:0:67:0:0 0:0:0:22:0:0 0:0:0:31:1:0 .02312
X 5342 0:0:3:24:0:0 0:5:0:65:0:0 0:0:0:55:0:0 0:0:0:14:0:0 .02312

관련 정보