첫 번째 열의 값을 기준으로 두 파일을 비교하는 방법은 무엇입니까?

첫 번째 열의 값을 기준으로 두 파일을 비교하는 방법은 무엇입니까?

첫 번째 열의 값을 기준으로 두 파일을 비교하고 싶습니다.

파일 1

aaa 23 3
bbb 56 6
ccc 45 2

파일 2

bbb m a
aaa a m
ccc m m

출력 파일은 다음과 같아야 합니다.

aaa  a m
bbb  m a
ccc  m m

즉, 첫 번째 파일의 첫 번째 열 순서대로 두 번째 파일의 두 번째와 세 번째 열을 인쇄해야 합니다.

누군가 이에 대한 awk 스크립트를 제안할 수 있습니까?

답변1

이 시도:

$ awk 'FNR==NR{a[$1]=$0;next};{print a[$1]}' file2 file1

답변2

대용량 파일의 경우 속도가 매우 느리지만 다음을 수행할 수 있습니다.

$ while read a rest; do grep -w $a file2; done < file1
aaa a m
bbb m a
ccc m m

Perl에서는 더 빠른 방법입니다.

$ cat file1 | perl -lane '$k{$F[0]}=$_;
                END{
                  open(A,"file1");
                  while(<A>){/^(.+?)\s/; print $k{$1}}
               }' file2
aaa a m
bbb m a
ccc m m

관련 정보