awk를 사용하여 여러 필드 연결

awk를 사용하여 여러 필드 연결

다음과 같이 file1이 있습니다.

2010,92614,0,1
2010,92614,4,1

file2는 다음과 같습니다.

2010,0,907894
2010,1,17788
2010,2,2827
2010,3,1212
2010,4,669914

file1의 필드 1과 3, file2의 필드 1과 2에서 두 파일을 결합하고 싶습니다(예를 들어 두 파일의 첫 번째 레코드는 2010과 0임). 출력은 다음과 같아야 합니다.

2010,92614,0,1,907894
2010,92614,4,1,669914

즉, 행과 일치하도록 file2의 필드 3을 file1에 추가해야 합니다. 다음 코드를 시도하면 file1의 데이터는 제공되지만 file2의 필드 3은 제공되지 않습니다.

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

나는 잘못 이해합니다 :

2010,92614,0,1,
2010,92614,4,1,

끝에 쉼표가 있지만 데이터는 없습니다. file1의 일치하는 필드가 서로 인접하지 않기 때문일 수 있다고 생각합니다. file1의 필드를 다음과 같이 재정렬하면

awk -F, '{print $1,$3,$2,$4}' OFS=, file1 > file1_mod

그런 다음 코드를 추가하면 작동합니다.내 질문은: 필드 순서를 변경하지 않고 어떻게 참여할 수 있습니까?

기본 Bash "join" 명령은 몇 가지 트릭을 사용하여 여러 필드를 결합할 수 있지만 해당 솔루션에는 관심이 없습니다. awk를 사용하고 싶습니다.

관련 정보