Уменьшение приоритета процесса только заставит его работать дольше. Таким образом, единственными возможными побочными эффектами могут быть следующие:
Что-то вроде:
awk -F, '{print; for (i = 0+$3; i <= $4; i++) print $0 FS i}'
while IFS= read -r l; do
printf '%s\n' "$l" | tee log
for i in $(seq $(cut -d, -f3,4 log | tr, '\n')); do
printf '%s,%s\n' "$l" "$i"
done
done < input.csv
perl -F, -pe 's|(.*)\K|join $/, $,, map "$1,$_", 0+$F[2]..$F[3]|ex' input.csv
выход:
1,13/06/17,01,03,D151
1,13/06/17,01,03,D151,1
1,13/06/17,01,03,D151,2
1,13/06/17,01,03,D151,3
2,25/06/17,04,06,D154
2,25/06/17,04,06,D154,4
2,25/06/17,04,06,D154,5
2,25/06/17,04,06,D154,6
$1
. \n
в текущей записи не будет сохранено в $1, так как .
не соответствует новой строке, если не действует модификатор /s
. $F[2]..$F[3]
=> генерировать последовательность чисел, начиная с левого и заканчивая правым, с шагом 1. Артефакт 0+
предназначен для удаления ведущих нулей, которые в противном случае были бы результатом. map
выполнит соответствующую операцию, объединив текущую строку и целое число, разделенное запятой. $/
, который представляет собой RS
и по умолчанию представляет собой новую строку.