특정 열을 다른 파일과 일치

특정 열을 다른 파일과 일치

fileA와 fileB 아래에 두 개의 파일이 있습니다. 열 2(파일 A)의 처음 세 자리는 열 1(파일 B)과 일치합니다. 열1(파일 A)은 63과 같아야 합니다.

파일 A

 63,918234
 64,918093
 63,920983

문서 B

 918,XXX
 920,YYY

지금까지 내 코드는 fileA의 줄만 인쇄했습니다.

 awk -F~ 'NR==FNR{a[$1]=$1;next}{n=substr($2,1,3); sub(/^0+/, "", n); for(i in a)if(n~"^"a[i] && $1 ~"63")print $0}' fileB fileA

내 예상 결과는

63,918234,XXX
63,920983,YYY

답변1

awk기본값이 아닌 필드 구분 기호를 사용해도 선행 공백이 제거되지 않기 때문에 혼란스러울 수도 있습니다 . 아마도 가장 쉬운 방법은 필드에 번호를 매기도록 하는 것입니다.

$ awk -F, 'NR==FNR {a[$1+0]=$2;next} $1+0==63 {print $0","a[substr($2,1,3)+0]}' fileB fileA
 63,918234,XXX
 63,920983,YYY

관련 정보