как выполнить расчет на выходе cat и затем отформатировать его

как выполнить расчет на выходе cat и затем отформатировать его

Я вообще не разбираюсь в скриптах оболочки, но у меня есть это

cat /sys/class/power_supply/BAT0/power_now

что дает мне выходную мощность в милливаттах, которую я хотел бы отформатировать как ватты и использовать в часах

watch -t -n 5 cat /sys/class/power_supply/BAT0/power_now

решение1

Вы можете использовать bc(с флагом для выполнения деления с плавающей точкой):

echo "$(cat /sys/class/power_supply/BAT0/power_now) / 1000" | bc -l

решение2

Вы всегда можете прибегнуть к awk для анализа файла и выполнения вычислений:

awk -F '=' '/POWER_SUPPLY_POWER_NOW/{print $2/1000}' /sys/class/power_supply/BAT0/power_now

Это работает при использовании =в качестве разделителя для столбцов. Типичный формат awk — выполнять действие в {}для строк, которые соответствуют шаблону в //. Так, для строки, которая содержит POWER_SUPPLY_POWER_NOW, вынуть столбец 2 ( $2) и вывести его после деления на 1000.

Что касается того, как это сделать с помощью watch, то это может быть немного сложно использоватьиз-за кавычек. Я бы предложил запустить его так:

watch "awk -F '=' '/POWER_SUPPLY_POWER_NOW/{print $2/1000}' /sys/class/power_supply/BAT0/power_now"

Связанный контент