Как сравнить и заменить значение в конкретном местоположении с awk

Я хочу выдержать сравнение два 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 
1
задан 10 May 2018 в 00:00

1 ответ

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",""
0
ответ дан 8 December 2019 в 01:10

Другие вопросы по тегам:

Похожие вопросы: