두 파일 간의 여러 열 값 비교

두 파일 간의 여러 열 값 비교

Linux 시스템에 다음 데이터가 포함된 두 개의 CSV 파일이 있습니다.

파일 A

Sunil,21,write a line,2312,12-03-2022   
Ashok,22,write a para,2312,12-03-2022
Sam,23,create file using,2312,12-03-2022

문서 B

21,write a line,Writer
21,write a script,Writer
23,create file using,Coder
25,create class,Coder
22,write a para,Poet
22,write a file,Writer

이제 FileA의 두 번째 및 세 번째 열(예: 21, 행 쓰기)을 FileB와 비교해야 하며, 일치하면 FileB의 세 번째 열이 인쇄되어야 합니다.

산출:

Writer
Poet
Coder

답변1

원하는 것을 얻고 데이터가 제공된 것이라고 가정하면 다음과 같이 달성할 수 있습니다.

awk -F, 'NR==FNR{array[$2,$3]; next} ($1,$2) in array { print $NF}' filea fileb

기본적으로 여기서 수행하는 작업은 array현재 레코드 처리를 중지할 때 열 2와 열 3을 저장하는 것입니다(사용함 next). then is $1$2of fileb in arrayif 그렇다면 레코드의 마지막 열을 참조하는 $NF곳을 인쇄합니다.$NF

NRFNRawk에 내장된 변수입니다 . NR은 지금까지의 총 레코드 수를 나타내고, FNR은 현재 파일의 레코드 수를 나타냅니다.

관련 정보