서로 다른 두 파일의 필드를 일치시키고 출력 파일에 추가하는 방법은 무엇입니까?

서로 다른 두 파일의 필드를 일치시키고 출력 파일에 추가하는 방법은 무엇입니까?

파일 1의 $1과 파일 2의 $2를 사용하여 두 개의 서로 다른 파일을 일치시키고 파일 1의 파일 2의 $1을 인쇄해야 합니다.

입력 파일 1

101 2
101 5
101 7
103 2
103 3
103 4
105 3
105 2

입력 파일 2

24 101
23 103
26 105

원하는 출력

101 2 24
101 5 24
101 7 24
103 2 23
103 3 23
103 4 23
105 3 26
105 2 26

다음 코드를 시도했지만 잘못된 출력이 제공됩니다.

awk 'FNR==NR{a[$2]=$0;next};{print a[$2]}' file2 file1

답변1

고전적인 직업 join:

join -1 1 -2 2 file1 file2
  • -1 1첫 번째 파일의 필드를 지정합니다.
  • -2 2두 번째 파일의 필드를 지정합니다.

답변2

코드부터 시작하여 awk거의 다 왔으므로 솔루션도 게시하겠습니다.

awk 'FNR==NR { a[$2]=$1; next; } { print $0,a[$1] } ' file2 file1

산출:

101 2 24
101 5 24
101 7 24
103 2 23
103 3 23
103 4 23
105 3 26
105 2 26

관련 정보