como realizar um cálculo na saída de cat e depois formatá-lo

como realizar um cálculo na saída de cat e depois formatá-lo

Eu não conheço nenhum script de shell, mas tenho isso

cat /sys/class/power_supply/BAT0/power_now

o que me dá a saída em miliwatts, que eu gostaria de formatar como watts e usar no relógio

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

Responder1

Você pode usar bc(com a flag para fazer divisão de ponto flutuante):

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

Responder2

Você sempre pode recorrer ao awk para analisar arquivos e realizar cálculos:

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

Isso funciona =como separador de colunas. O formato típico do awk é executar ações em {}linhas que correspondam ao padrão em //. Então, para a linha que possui POWER_SUPPLY_POWER_NOW, retire a coluna 2 ( $2) e imprima após dividir por 1000.

Quanto a fazer isso com watch, pode ser um pouco difícil de usardevido a citações. Eu sugiro executá-lo como:

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

informação relacionada