Um programa awk :
BEGIN { FS = ","; col = "COLOR1"; i = 1 }
!/^[0-9]/ { next }
$3 == "" {
val = sprintf("%.0f", $2)
data = data ? data OFS val : val
col = col OFS "COLOR" ++i
next
}
$2 < min { min = $2 }
$3 > max { max = $3 }
END {
printf("NAME:\nFROM= %s %s\nTO= %s %s\nCOLOR= %s\n",
min, data, data, max, col)
}
Teste:
$ awk -f script.awk file.csv
NAME:
FROM= -100 -346 -249 -125
TO= -346 -249 -125 100
COLOR= COLOR1 COLOR2 COLOR3 COLOR4
Eu estou supondo que pode haver mais linhas (mas não colunas) de dados, tanto na primeira quanto na segunda seção do arquivo, e que deve haver tantas COLOR entradas na linha COLOR . são valores de dados nas linhas FROM e TO na saída.
Linhas não numéricas são ignoradas pelo bloco !/^[0-9]/ .
Os dados repetidos na saída são selecionados pelo terceiro bloco ( $3 == "" ). Esse bloco cria uma string data e uma col com os valores apropriados. O arredondamento é executado usando sprintf() com um formato especificando um número de ponto flutuante sem casas decimais.
Os valores mínimo e máximo são coletados da seção posterior do arquivo de entrada como o mínimo da segunda coluna e o máximo da terceira coluna.
O bloco END imprime o relatório resultante.