如何对 cat 的输出进行计算,然后对其进行格式化

如何对 cat 的输出进行计算,然后对其进行格式化

我根本不懂 shell 脚本,但我有这个

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"

相关内容