기본 파일 bla.tsv(FS= \t
)가 있습니다.
id hub fil plop
34 ji ji
54 jo jo
46 ja ja
그리고 정보 파일hub.csv(FS= ,
):
34,fuse
46,fose
정보를 다음과 같은 열에 인쇄하고 싶습니다 hub.csv
.hub
bla.tsv
id hub fil plop
34 fuse ji ji
54 jo jo
46 fose ja ja
올바른 행에 올바른 정보를 인쇄했지만 마지막 열 다음 열에 인쇄했습니다.
awk -v OFS="\t" 'NR==FNR{a[$1]=$2;next}{print $0,a[$1]}' FS="," hub.csv FS="\t" bla.tsv > result.tsv
(있는 경우) bla.tsv
에 있는 값으로 두 번째 열을 어떻게 채울 수 있나요? hub.csv
의 구조는 bla.tsv
이미 "정확"합니다. 즉, 헤더 뒤의 모든 행에 빈 두 번째 열이 있습니다( \t
ID 뒤의 두 개의 연속 열).
답변1
형식이 bla.tsv
이미 정확하고 두 번째 열이 비어 있으므로 방법을 최소한으로 수정하면 됩니다.
awk -v OFS="\t" 'NR==FNR{a[$1]=$2;next} ($1 in a){$2=a[$1]} 1' FS="," hub.csv FS="\t" bla.tsv > result.tsv
처리하는 동안 ID에 배열의 일치하는 값이 있는지 bla.tsv
확인 합니다 . 그렇다면 두 번째 필드를 해당 값으로 설정하고 일반적으로 현재 행(수정 사항 포함)을 인쇄합니다.hub
a