Linux에서 awk로 작동하는 vlookup

Linux에서 awk로 작동하는 vlookup

안녕하세요. 데이터가 포함된 두 개의 파일(file1)이 있습니다.

4,abc
3,xyz
5,fut
6,gfd

파일 2:

gfd,2.3
xyz,4.5
abc,6.7
fut,3.2

Linux 스크립트 명령을 사용하여 file3을 출력 파일로 생성하고 싶습니다.

4,6.7
3,4.5
5,3.2
6,2.3

FR=NFR과 같은 awk 스크립트를 사용하여 이를 수행하는 방법

답변1

그리고 join:

join -t, -1 2 -2 1 -o 1.1,2.2 <(sort -t, -k2 file1) <(sort -t, -k1 file2)
  • -t,구분 기호를 로 설정합니다 ,.
  • -1 2첫 번째 파일 연결 필드는 두 번째입니다.
  • -2 1두 번째 파일 연결 필드가 첫 번째입니다.
  • -o 1.1,2.2출력 형식
  • <(sort ...)조인에는 조인 필드에 정렬된 입력 파일이 필요합니다.

답변2

그리고 awk:

script.awk:

FNR==NR{
    var[$2]=$1
}
FNR!=NR{
    print(var[$1]","$2)
}

호출 스크립트

awk -F, -f script.awk file1 file2

답변3

awk oneliner와 유사합니다:

awk -F"," 'FNR==NR{var[$2]=$1;next;}{print var[$1]FS$2}'  file1 file2

산출:

$ awk -F"," 'FNR==NR{var[$2]=$1;next;}{print var[$1]FS$2}'  file1.txt file2.txt
6,2.3
3,4.5
4,6.7
5,3.2

관련 정보