awk를 사용하여 일치하는 열을 기반으로 파일에 열을 추가하고 행 순서를 유지하는 방법

awk를 사용하여 일치하는 열을 기반으로 파일에 열을 추가하고 행 순서를 유지하는 방법

awk를 사용하여 파일의 열을 다음 파일과 일치시키고 해당 열이 있는 경우 추가하는 방법.

파일 1:

T36
T200
T77
T99
T100
T101
T110

파일 2:

T36 aa  123
T36 aa  456
T200 cc 789
T99 aa  1011
T77 bb  1213
T77 bb  1415
T100 xx 1617

원하는 출력:

T36 aa  123
T36 aa  456
T200    cc  789
T77 bb  1213
T77 bb  1415
T99 aa  1011
T100    xx  1617
T101
T110

내 출력 파일에서 파일 1의 순서를 가져와서 파일 2에 없는 줄을 인쇄하고 싶습니다.

지금까지 이 작업을 수행했지만 전체가 아닌 일치하는 열만 인쇄했습니다.

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

도와주세요!

답변1

awk 'f==2 {map[$1] = ($1 in map) ? map[$1] ORS $0 : $0} 
     f==1 {print (($1 in map)? map[$1] : $1)}
' f=2 file2 f=1 file1

또는 동일한 FNR==NR관용어를 사용합니다.

awk 'FNR==NR {map[$1] = ($1 in map) ? map[$1] ORS $0 : $0; next} 
     {print (($1 in map)? map[$1] : $1)}
' file2 file1

산출:

T36 aa  123
T36 aa  456
T200 cc 789
T77 bb  1213
T77 bb  1415
T99 aa  1011
T100 xx 1617
T101
T110

관련 정보