다음과 같이 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를 사용하고 싶습니다.