Обработка текста с использованием Linux

Вы можете попробовать это в конфигурации .htaccess или apache.

     AddType text/plain .log
0
18.11.2018, 11:34
2 ответа

Программа 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распечатывает результирующий отчет.

1
28.01.2020, 02:24

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
2
28.01.2020, 02:24

Теги

Похожие вопросы