У меня есть файл csv
D,FNAME,MNAME,LNAME,GENDER,DOB,snapshot,PID.1,PID2,FNAME.1,MNAME.1,LNAME.1,FNAME2,MNAME2,LNAME2
,,,,,,201211.0,2,6,6,J,J,D,,
,,,,,,201211.0,3,4,6,H,H,M,,
,,,,,,201211.0,6,7,8,d,d,d,,
,,,,,,201211.0,0,2,5,6,7,8,,
,,,,,,201211.0,,,,,,,,
,,,,,,201211.0,,,,,,,,
Что я хочу сделать, это использовать информацию в столбцах PID.1, FNAME.1, MNAME.1, LNAME.1 для заполнения столбцов D, FNAME, MNAME, LNAME, если есть нулевое значение, а затем выведите все столбцы в новый CSV-файл. Итак, мой ожидаемый результат -
D,FNAME,MNAME,LNAME,GENDER,DOB,snapshot,PID.1,PID2,FNAME.1,MNAME.1,LNAME.1,FNAME2,MNAME2,LNAME2
2,6,J,J,,,201211.0,2,6,6,J,J,D,,
3,6,H,H,,,201211.0,3,4,6,H,H,M,,
6,8,d,d,,,201211.0,6,7,8,d,d,d,,
0,5,6,7,,,201211.0,0,2,5,6,7,8,,
,,,,,,201211.0,,,,,,,,
,,,,,,201211.0,,,,,,,,
Я пытался использовать awk
, чтобы сделать это самостоятельно. Вот мой код.
awk -F, '{if ($1=="" && $8!="")$1=$8;print $0}' test4.csv | awk -F, '{if ($2=="" && $10!="")$2=$10;print $0}' | awk -F, '{if ($3=="" && $11!="")$3=$11;print $0}' | awk -F, '{if ($4=="" && $12!="")$4=$12;print $0}'
Вывод был
D,FNAME,MNAME,LNAME,GENDER,DOB,snapshot,PID.1,PID2,FNAME.1,MNAME.1,LNAME.1,FNAME2,MNAME2,LNAME2
2 201211.0 2 6 6 J J D
3 201211.0 3 4 6 H H M
6 201211.0 6 7 8 d d d
0 201211.0 0 2 5 6 7 8
,,,,,,201211.0,,,,,,,,
,,,,,,201211.0,,,,,,,,
Так что я этого не сделал. Есть кто-нибудь, кто может мне помочь? Спасибо.