Я хочу выдержать сравнение два csv
файлы с одним общим столбцом и затем заменяют данные от первого файла до второго файла в конкретном местоположении.
file1.csv:
"id","name","marks","subject","result"
"1","a","","art",""
"4","c","","math",""
"3","b","","history",""
"5","d","","comerce",""
file2.csv:
"id","marks","result"
"4","40","pass"
"3","30","fail"
"1","20","fail"
"6","10",""
"5","10",""
вывод должен быть:
"id","name","marks","subject","result"
"1","a","20","art","fail"
"4","c","40","math","pass"
"3","b","30","history","fail"
"5","d","10","comerce",""
Я использую awk
оператор как ниже, но это объединяющий значение, наконец не добавляющее в конкретном местоположении:
awk 'NR==FNR{a[$1]=$2; b[$1]=$3; next} {print $0, a[$2], b[$2] } file1.csv file2.csv
awk '
BEGIN{OFS=FS=","}
NR==FNR {
marks[$1]=$2; status[$1]=$3; next
}
$1 in marks {$3 = marks[$1]}
$1 in status {$5 = status[$1]}
1' file2.csv file1.csv
"id","name","marks","subject","result"
"1","a","20","art","fail"
"4","c","40","math","pass"
"3","b","30","history","fail"
"5","d","10","comerce",""