LINUX.ORG.RU

Скрипт в bash

 ,


1

1

Помогите пожалуйста, сделать скрипт. Необходимо взять данные из /opt/cpu_load содержащий в себе

2020-04-23 21:04 CPU Load: 0.46;
2020-04-23 21:17 CPU Load: 0.84;
2020-04-23 21:22 CPU Load: 0.79;

Выбрать данные со значениями больше 0.75 , посчитать их количество и это количество поделить на 7. (Значений в файле гораздо больше. 3 строки для примера)



Последнее исправление: deimandar (всего исправлений: 3)

awk ‘{ print $5; }’ | tr -d ‘;’ | while read line; do echo $(($line > 0.75)); done | awk ‘{ sum += $1; } END { print sum; }’

anonymous
()

Необходимо взять данные из /opt/cpu_load

man 7 hier
gremlin_the_red ★★★★★
()
lua -e'n=0;for x in io.lines"/opt/cpu_load" do n=n+(tonumber(x:match"([%d.]+);")>0.75 and 1 or 0)end;print(n/7)'
Egor_
()
 echo "scale=2; $(grep -Ec "\.7[6789]|\.[89][0-9]|[1-9]\.|[0-9][0-9]\." /opt/cpu_load) / 7" | bc
Tanger ★★★★★
()
Последнее исправление: Tanger (всего исправлений: 1)

это типа конкурс на самое извращённое решение домашнего задания ?

писать лень, но можно заменить : на ; получить csv и дальше дёрнуть один select...sql давно не трогал, но что-то типа:

--- sqlite
CREATE VIRTUAL TABLE temp.t1 USING csv(filename='file.csv',delimiter=';');
SELECT count()/7.0 FROM 'temp.t1' WHERE 'c2'>0.75;

кстати и тулз какой-то был, подмножество sql для csv для подобных простых запросов

MKuznetsov ★★★★★
()
Ответ на: комментарий от deimandar

perl -lane '$i++ if $F[$#F] > 0.75; END { print $i / 7 }' /opt/cpu_load

dexpl ★★★★★
()
#!/usr/bin/env kotlin
println(java.io.File("/opt/cpu_load").readLines().map({ line -> line.drop(27).take(4).toDouble() }).filter({ load -> load > 0.75 }).size / 7.0)
ratvier ★★
()

awk ‘{if ($5 > 0.75) qty+=1;} END {print qty/7}’ < /opt/cpu_load

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.