cómo realizar un cálculo en la salida de cat y luego formatearlo

cómo realizar un cálculo en la salida de cat y luego formatearlo

No sé nada de scripts de shell, pero tengo esto

cat /sys/class/power_supply/BAT0/power_now

lo que me da la salida en milivatios, que me gustaría formatear como vatios y usar en el reloj

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

Respuesta1

Puedes usar bc(con la bandera para hacer división en coma flotante):

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

Respuesta2

Siempre puedes recurrir a awk para analizar archivos y realizar cálculos:

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

Esto funciona utilizando =como separador de columnas. El formato típico de awk es realizar acciones en {}líneas que coinciden con el patrón en //. Entonces, para la línea que tiene POWER_SUPPLY_POWER_NOW, saque la columna 2 ( $2) e imprímala después de dividirla por 1000.

En cuanto a hacer eso con watch, puede ser un poco difícil de usar.debido a citas. Sugeriría ejecutarlo como:

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

información relacionada