두 개의 파일 file1.csv(20열 410k 행)와 data.csv(4열 1800행)가 있습니다. 내가 하고 싶은 일은 data.csv의 첫 번째 열이 file1.csv의 두 번째 열과 일치하는 경우 file1.csv의 첫 번째 열을 data.csv의 세 번째 열 값으로 덮어쓰는 것입니다. 일치하는 항목이 없으면 기존 값을 유지합니다.
이 명령은 일치하는 행을 나열하지만 교체 부품을 올바르게 가져오지는 않습니다.
awk -F"," 'BEGIN{OFS=","} {if (NR==FNR) {a[$1]=$3; next} if ($2 in a) print}' data.csv file1.csv
> file3.csv
감사해요!
답변1
내가 올바르게 이해했다면 다음을 원합니다.
awk -F"," 'BEGIN{OFS=","}
{
if (NR==FNR) {
a[$1]=$3;
next
}
if ($2 in a){
$1=a[$2]
}
print
}' data.csv file1.csv
거의 다 왔습니다. $1
첫 번째 파일에서 저장한 내용으로 설정 하고 해당 줄을 인쇄하면 됩니다.