我正在尝试使用命令获取 2 位数字 temp 的返回值sensors
,这向我显示了以下内容:
$ sensors
coretemp-isa-0000
Adapter: ISA adapter
Core 0: +40.0°C (high = +85.0°C, crit = +95.0°C)
Core 8: +35.0°C (high = +85.0°C, crit = +95.0°C)
Core 9: +40.0°C (high = +85.0°C, crit = +95.0°C)
Core 10: +38.0°C (high = +85.0°C, crit = +95.0°C)
coretemp-isa-0001
Adapter: ISA adapter
Core 0: +38.0°C (high = +85.0°C, crit = +95.0°C)
Core 1: +37.0°C (high = +85.0°C, crit = +95.0°C)
Core 9: +30.0°C (high = +85.0°C, crit = +95.0°C)
Core 10: +31.0°C (high = +85.0°C, crit = +95.0°C)
通过以下命令,我已经能够获取返回的值,但我需要一一获取值:
sensors | awk '{if (match($0, "Core 0")){printf("%d",$3);} }'
返回:4038
有没有办法逐一获取第一次或第二次出现?
答案1
看着man sensors
你可以使用:sensors -j
这会返回 JSON 格式的数据,然后可以对其进行解析并修剪为您需要的值。
答案2
$ sensors | sed -rn 's/.*Core 0:\s+([^ ]+).*/\1/p'
+40.0°C
+38.0°C
$ sensors | sed -rn 's/.*Core 0:\s+.([0-9.]+).*/\1/p'
40.0
38.0
$ sensors | sed -rn 's/.*Core 0:\s+.([0-9]+).*/\1/p'
40
38