Похоже, у вас есть сгенерированный машиной отчет. Идеальный подход заключается в том, чтобы эта машина создала другой отчет - тот, у которого нет «/////» или чего-то подобного, только данные, которые вы хотите импортировать. Таким образом, вывод нового отчета может выглядеть следующим образом.
shift_num, prog_min, mean_sec, att_sec, adt_min
1, 600, 599, 658, 210
...
На практике, однако, часто "невозможно" получить подобные отчеты. (То есть, всегда возможно для машины, но часто люди не хотят.) Когда это происходит, используйте ваш любимый язык обработки текста, чтобы превратить отчет в полезные данные.
Мне нравится awk для такого рода вещей. Другие любят Perl.
Чтобы проиллюстрировать это, я набрал эту копию вашего отчета. (Сохранено как test.dat.)
ORDER Nr FG68909 Q.ty Ordered 99
...
SHIFT Nr. 1
////////
PROGRAMMED MEAN
600 min JOB TIME 599 sec
AVERAGE Turnaround Time 658 sec
AVERAGE Delivery Time 210 mins
Тогда я написал эту программу на awk. Это делает много предположений о макете вашего отчета. Некоторые из них, вероятно, потерпят неудачу на реальных данных.
/SHIFT/ {shift = $NF}
/JOB TIME/ {
programmed = sprintf("%d %s", $1, $2);
mean = sprintf("%d %s", $(NF-1), $NF);
}
/AVERAGE Turnaround/ { avg_turnaround = sprintf("%d %s", $(NF-1), $NF);}
# Assumes the line "AVERAGE Delivery" is also the end of the record.
/AVERAGE Delivery/ {
avg_delivery = sprintf("%d %s", $(NF-1), $NF);
printf("%d, '%s', '%s', '%s', '%s'\n", shift, programmed, mean, avg_turnaround, avg_delivery);
# Clear the vars for the next record.
shift = "";
programmed = "";
mean = "";
avg_turnaround = "";
avg_delivery = "";
}
Выход. , .
$ awk -f test.awk test.dat
1, '600 min', '599 sec', '658 sec', '210 mins'