awk를 사용하여 한 파일에서 다른 파일로 값을 여러 번 가져오는 방법은 무엇입니까?

awk를 사용하여 한 파일에서 다른 파일로 값을 여러 번 가져오는 방법은 무엇입니까?

파일 1:

01 999 234 432 666 
02 888 453 234 763
03 145 334 235 456
04 234 784 482 785
05 868 453 546 787

파일 2:

01
01
02
03
03
05

두 파일의 첫 번째 열을 일치시키고 다음과 같은 예상 출력을 얻고 싶기 때문입니다.

예상 출력:

999 234 432 666
999 234 432 666
888 453 234 763
145 334 235 456
145 334 235 456
868 453 546 787

다음 코드를 시도했습니다.

awk 'NR==FNR{a[$1]=$1; next} {if($1 in a) {print $2" "$3" "$4" "$5}}' file2 file1

그러나 내가 얻는 것은 이것이다:

999 234 432 666
888 453 234 763
145 334 235 456
868 453 546 787

그렇다면 awk를 사용하여 예상되는 출력을 어떻게 얻습니까?

답변1

첫 번째 파일에서 조회 테이블을 작성한 다음 두 번째 파일에서 색인을 생성해야 합니다.

$ awk 'NR==FNR {a[$1] = $2 FS $3 FS $4 FS $5; next} {print a[$1]}' file1 file2
999 234 432 666
999 234 432 666
888 453 234 763
145 334 235 456
145 334 235 456
868 453 546 787

또는,

join -o1.2,1.3,1.4,1.5 file1 file2

관련 정보