awk를 사용하여 2개의 파일을 2개의 열로 연결하지만 열 번호는 다릅니다.

awk를 사용하여 2개의 파일을 2개의 열로 연결하지만 열 번호는 다릅니다.

2개의 파일이 있고 awk를 사용하여 첫 번째 파일의 $1, $2와 두 번째 파일의 $1, $8을 연결해야 합니다.

파일 1:

111,123abc,eee,ttt,yyy
222,234bcd,ttt,yyy,333

파일 2:

111, hhhh, eeee, rere,, 23, 2014, 123abc

222,jjkj,7878,uhjj,1,45,2013,234bcd

333,aaa,hhh,jjjj,2,78,590,567acd

산출:

111,123abc,hhhh,eeee,rere,,23,2014
222,234bcd,jjkj,7878,uhjj,1,45,2013

답변1

노력하다:

$ awk -F, -v OFS=, 'NR==FNR{a[$1,$2]=1; next} ($1,$8) in a {print $1,$8,$2,$3,$4,$5,$6,$7}' file1 file2

이것은 만든다:

111,123abc,hhh,eeee,rere,,23,2014,123abc
222,234bcd,jjkj,7878,uhjj,1,45,2013,234bcd

첫 번째 열에는 8개의 열이 있고 두 번째 열에는 9개의 열이 있으므로 이는 출력과 정확히 동일하지 않습니다. 오타인 것 같아요 :-)

답변2

예제에 표시된 대로 파일이 조인 필드(필드 #1)를 기준으로 정렬된 경우 다음 join명령을 사용할 수 있습니다.

join -t, -o 1.1,1.2,2.3,2.4,2.5,2.6,2.7,2.8 file1 file2

관련 정보