첫 번째 열의 값을 기준으로 두 파일을 비교하고 싶습니다.
파일 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