명령을 사용하여 2자리 온도의 반환 값을 얻으려고 하는데 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