Примерно этого должно быть достаточно:
awk 'BEGIN{FS=OFS=","}{for(i=$1;i<=$2;i++) print i,$3}' input_file > output_file
Если у вашего файла есть заголовок, который вам не нужно печатать, тогда:
awk 'BEGIN{FS=OFS=","}NR>1{for(i=$1;i<=$2;i++) print i,$3}' input_file > output_file
Из man bash
:
If the redirection operator is <<-, then all leading tab characters are
stripped from input lines and the line containing delimiter. This
allows here-documents within shell scripts to be indented in a natural
fashion.
Это здесь-документ.
command <<-word
here-document contents
word
Слово
, используемое для обозначения здесь-документа, является произвольным, оно обычно, но не обязательно, для использования слова в верхнем регистре.
-
в << - word
приводит к тому, что табуляция удаляется с начала каждой строки в содержимом настоящего документа.
cat <<-SERVICE_ANNOUNCEMENT
hello
world
SERVICE_ANNOUNCEMENT
Если вышеупомянутый здесь-документ был написан с буквенными табуляторами в начале каждой строки, это привело бы к выводу
hello
world
, а не
hello
world
Табуляторы перед конечным разделителем также удаляются с помощью << -
(но не без -
):
cat <<-SERVICE_ANNOUNCEMENT
hello
world
SERVICE_ANNOUNCEMENT
(тот же вывод)