![awk를 사용하여 열 일치 및 교체](https://linux55.com/image/160013/awk%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%97%B4%20%EC%9D%BC%EC%B9%98%20%EB%B0%8F%20%EA%B5%90%EC%B2%B4.png)
파일 1의 열 1이 파일 2의 열 2와 일치하면 파일 2의 열 13을 파일 1의 열 2로 바꿔야 합니다.
파일 1
AAAA00000687697 HPNMS
AAAA00000693037 GER112
AAAA00000349750 FRA0158
파일 2
585 AAAA00000687697 1 + 11868 14409 14409 14409 3 11868,12612,13220, 12227,12721,14409, 0 BBBB00000223972 none none -1,-1,-1,
585 AAAA00000693037 1 + 11871 14412 14412 14412 3 11871,12612,13224, 12227,12721,14412, 0 BBBB00000223972 none none -1,-1,-1,
585 AAAA00000349750 1 + 11873 14409 14409 14409 4 11873,12594,13402,13660, 12227,12721,13655,14409, 0 BBBB00000223972 none none -1,-1,-1,-1,
출력은 다음과 같아야합니다
585 AAAA00000687697 1 + 11868 14409 14409 14409 3 11868,12612,13220, 12227,12721,14409, 0 HPNMS none none -1,-1,-1,
585 AAAA00000693037 1 + 11871 14412 14412 14412 3 11871,12612,13224, 12227,12721,14412, 0 GER112 none none -1,-1,-1,
585 AAAA00000349750 1 + 11873 14409 14409 14409 4 11873,12594,13402,13660, 12227,12721,13655,14409, 0 FRA0158 none none -1,-1,-1,-1,
나는 다음 코드를 시도했다
awk 'NR==FNR{a[$1]=$2;next} $2 in a {$13=a[$1];print}' FS='\t' OFS='\t' file1.txt file2.txt > output.txt
열 13이 비어 있는 파일 2를 인쇄합니다.
a[$1]만 인쇄하려고 하면 빈 파일이 인쇄됩니다. 첫 번째 중괄호에서 다음 부분을 제거하면 a[$1]만 인쇄됩니다. 왜 배열을 저장하는 데 문제가 있는지 모르겠습니다.
답변1
가능한 경우 $13
배열 문자열로 바꾸십시오.a[$2]
awk 'NR==FNR{a[$1]=$2;next}($2 in a){$13=a[$2]}1' file1 file2