Вы можете попробовать это в конфигурации .htaccess или apache.
AddType text/plain .log
Программа 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)
}
Проверка:
$ awk -f script.awk file.csv
NAME:
FROM= -100 -346 -249 -125
TO= -346 -249 -125 100
COLOR= COLOR1 COLOR2 COLOR3 COLOR4
Я предполагаю, что может быть больше строк (, но не столбцов )данных, как в первом, так и во втором разделе файла, и что должно быть столько же COLOR
записей в COLOR
, поскольку в выходных данных в строках FROM
и TO
есть значения данных.
Нечисловые строки, не относящиеся к -, пропускаются блоком !/^[0-9]/
.
Данные, которые повторяются на выходе, выбираются третьим блоком ($3 == ""
). Этот блок создает строки data
и col
с соответствующими значениями. Округление выполняется с помощью sprintf()
с форматом, указывающим число с плавающей запятой без десятичных знаков.
Минимальное и максимальное значения берутся из последнего раздела входного файла как минимум второго столбца и максимум третьего столбца.
Блок END
распечатывает результирующий отчет.
awk решение (для вашего текущего входного файла):
awk 'NR>1 && NR<5{
v=sprintf("%.0f", $2); values=(values)? values FS v : v;
lbl="COLOR"; col_item=lbl""++c; col=(col)? col OFS col_item : col_item
}
NR==6{ from=$2 }
END{
print "NAME :"; print "FROM=",from,values;
print "TO=",values,$3; print "COLOR=",col,lbl""++c
}' file
Выход:
NAME :
FROM= -100 -346 -249 -125
TO= -346 -249 -125 100
COLOR= COLOR1 COLOR2 COLOR3 COLOR4