파일 a와 파일 조회가 있는데 구조는 다음과 같습니다.
vi a.txt
empid|ename|sal_grade|MANAGER_ID
1|raj|A|202
2|MAN|B|203
3|JOS|C|204
vi lookup.txt
Grade|sal|manager_id
A|$100000|202
A|$1000|099
B|$1000000|203
B|$100|011
Output:
1|raj|A|202
2|MAN|B|203
command:
awk 'BEGIN {FS=OFS="|"} NR==FNR{a[$1];next} $3 in a{print $0}' lookup.txt a.txt >matched.txt
두 파일 모두에서 순위와 Manager_id는 공통입니다. a.txt를 Rank 및 Manager_id를 사용하여 Lookup.txt와 결합하고 a.txt에서 데이터를 가져와서 Lookup.txt에서 일치하는 항목을 가져오려고 합니다. 다음 명령을 사용해 보았으나 순위 열만 조인했는데 순위 열과 관리자 ID 열을 조인해야 합니다.
미리 감사드립니다.
답변1
복합 키가 필요한 경우 복합 키를 빌드하세요.
awk '
BEGIN { FS=OFS="|" }
NR==FNR { a[$1 "-" $3]; next }
($3 "-" $4) in a { print $0 }
' lookup.txt a.txt > matched.txt
"-"
구분 기호로 사용하거나 다른 문자열로 사용하거나 아무것도 사용할 수 없습니다. 예제의 데이터를 사용하면 구분 기호 없이 작동합니다.