![파일 B의 일치하는 열 값을 사용하여 파일 A의 열에 누락된 값을 채웁니다.](https://linux55.com/image/131133/%ED%8C%8C%EC%9D%BC%20B%EC%9D%98%20%EC%9D%BC%EC%B9%98%ED%95%98%EB%8A%94%20%EC%97%B4%20%EA%B0%92%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%8C%8C%EC%9D%BC%20A%EC%9D%98%20%EC%97%B4%EC%97%90%20%EB%88%84%EB%9D%BD%EB%90%9C%20%EA%B0%92%EC%9D%84%20%EC%B1%84%EC%9B%81%EB%8B%88%EB%8B%A4..png)
2개의 파일이 있습니다. 파일 A의 NA를 파일 B의 열로 바꾸고 싶습니다.
File A
ENSG00000134539 131.178876666595 8.17899671725794 0.855069805781827 9.56529708095531 1.12E-21 1.74E-20 KLRD1
ENSG00000135250 1133.42737699143 -1.12767591222818 0.117927787197502 -9.56242747385385 1.15E-21 1.78E-20 SRPK2
ENSG00000214870 103.556102419252 -2.15426846253205 0.225384371016956 -9.55819808095733 1.20E-21 1.86E-20 NA
ENSG00000136153 249.119544948009 -1.32395826295328 0.138571556732024 -9.55432914356018 1.24E-21 1.93E-20 LMO7
File B
ENSG00000214870 AC004540.5 103.556102419252
ENSG00000267121 CTD-2020K17.1 231.295616750853
ENSG00000254733 RP11-317J19.1 53.0097117074116
첫 번째 열에서 파일 A와 파일 B를 일치시키고 파일 A의 마지막 열에 있는 NA를 파일 B의 두 번째 열로 바꾸고 싶습니다.
여러 가지 방법을 시도했지만 Linux를 처음 접했기 때문에 완료할 수 없습니다.
awk 'NR==FNR{A[$1]++;next} B[$7]==A[$2]' file1 file2
awk 'NR==FNR{ if (A[$1] in B[$1]) B[$7]==A[$2]}' file1 file2
내 명령에 문제가 있나요?
답변1
이 시도:
awk 'NR==FNR{a[$1]=$2; next} ($1 in a) && $NF=="NA"{$NF=a[$1]} 1' f2 f1
a[$1]=$2
첫 번째 열을 키로 사용하고 두 번째 열 데이터를 값으로 저장($1 in a) && $NF=="NA"
첫 번째 열이 배열의 키인지a
, 마지막 열이 키인지 확인하세요.NA
$NF=a[$1]
마지막 열을a
배열에 저장된 값 으로 변경합니다.
1
입력기록 내용 인쇄f2 f1
입력 파일의 순서에 주의하세요. 두 번째 파일 뒤에 첫 번째 파일이 옵니다.