首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用Regexp提取和处理GPUTemperature信息

利用Regexp提取和处理GPUTemperature信息
EN

Stack Overflow用户
提问于 2018-04-23 16:22:06
回答 2查看 68关注 0票数 0

我需要从Linux应用程序(传感器)中提取和处理图形卡温度整数,输出如下:

代码语言:javascript
复制
amdgpu-pci-0c00
Adapter: PCI adapter
fan1:        1972 RPM
temp1:        +50.0°C  (crit =  +0.0°C, hyst =  +0.0°C)

amdgpu-pci-0600
Adapter: PCI adapter
fan1:        1960 RPM
temp1:        +47.0°C  (crit =  +0.0°C, hyst =  +0.0°C)

amdgpu-pci-0200
Adapter: PCI adapter
fan1:        1967 RPM
temp1:        +52.0°C  (crit =  +0.0°C, hyst =  +0.0°C)

pch_skylake-virtual-0
Adapter: Virtual device
temp1:        +33.0°C

amdgpu-pci-0900
Adapter: PCI adapter
fan1:        1893 RPM
temp1:        +51.0°C  (crit =  +0.0°C, hyst =  +0.0°C)

amdgpu-pci-0300
Adapter: PCI adapter
fan1:        1992 RPM
temp1:        +53.0°C  (crit =  +0.0°C, hyst =  +0.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +24.0°C  (high = +80.0°C, crit = +100.0°C)
Core 0:        +23.0°C  (high = +80.0°C, crit = +100.0°C)
Core 1:        +21.0°C  (high = +80.0°C, crit = +100.0°C)

假设我想提取与amd gpu温度相关的信息,即50、47、52、51和53。到目前为止,我已经执行了以下代码:

代码语言:javascript
复制
sensors|grep temp| grep -Eo '\+[0-9]{0,9}'

我得到了:

代码语言:javascript
复制
+50
+0
+0
+47
+0
+0
+52
+0
+0
+32
+51
+0
+0
+53
+0
+0

所以我需要弄清楚:

  1. regexp查找断言,以便它捕获在数字开头有+符号的整数,而不显示+(加号)符号。
  2. 一种只获取amdgpu信息的方法,这样它就不会获取其他信息。
  3. 一种处理这些温度数字的方法,例如,我可以编写一个bash脚本来处理这些数字,而如果温度小于30,则这样做,如果超过70,就这样做。我应该将结果放在数组中并执行循环,还是有其他可行的方法?

请帮帮忙。问候

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-23 17:21:04

在你想要的温度存储在一个数组中,然后你可以对它们做数学计算。

arr=( $( IFS=$'\n' gawk 'BEGIN{ RS="\n\n"} { if($0 ~ /amdgpu/) print $0 }' test.txt | gawk 'BEGIN{ FS="[+.]" } { if($1 ~ /temp1:/) print $2 }' ) ) echo "${arr[*]}" 50 47 52 51 53

test.txt包含示例输出。从传感器命令获得输入(未测试)

arr=( $( sensors | IFS=$'\n' gawk 'BEGIN{ RS="\n\n"} { if($0 ~ /amdgpu/) print $0 }' | gawk 'BEGIN{ FS="[+.]" } { if($1 ~ /temp1:/) print $2 }' ) ) echo "${arr[*]}" 50 47 52 51 53

票数 1
EN

Stack Overflow用户

发布于 2018-04-23 18:02:05

如果您愿意使用类似Perl的regexp,也可以使用单个grep获得临时数据:

代码语言:javascript
复制
sensors | grep -oP 'temp\d:\s+\+\K\d+'

temp中,grep后面是一个数字和一个冒号,然后是至少一个空格字符和一个加号,然后我们给出一个lookbehind断言\K,它丢弃它之前的所有内容,最后捕获的只是\d+ (一个或多个数字)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49985716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档