使用正则表达式从Ubuntu sensors输出提取处理GPU温度整数
提取Ubuntu中sensors输出的显卡温度整数值
没问题,我来帮你搞定从sensors输出里提取显卡温度整数值的需求。针对你给出的amdgpu显卡的输出内容,这里有几个实用的命令行方法,都是在Ubuntu终端里直接能用的:
方法1:grep + awk组合(直观易懂)
sensors | grep -E 'amdgpu.*temp1' | awk '{print int($2)}'
解释:
grep -E 'amdgpu.*temp1':先过滤出所有amdgpu显卡的温度行(也就是同时包含amdgpu和temp1的行)awk '{print int($2)}':对每一行取第二列(也就是类似+50.0°C的内容),用int()函数把它转换成整数,自动去掉小数和符号,得到纯数字温度。
方法2:仅用awk(更简洁)
sensors | awk '/amdgpu/ && /temp1/ {print int($2)}'
解释:
awk直接内置了模式匹配,/amdgpu/ && /temp1/会筛选出同时包含这两个关键词的行,然后同样用int($2)提取温度整数值,省去了grep的步骤。
方法3:sed正则替换(适合正则爱好者)
sensors | sed -n '/amdgpu.*temp1/s/.*+\([0-9]*\)\.[0-9]°C/\1/p'
解释:
-n:只输出匹配处理后的行/amdgpu.*temp1/:定位目标行s/.*+\([0-9]*\)\.[0-9]°C/\1/p:用正则捕获+后面的整数部分(比如50),替换掉整行内容并打印出来。
如果想把所有显卡温度整数值放在同一行(用空格分隔),可以再加个tr命令:
sensors | grep -E 'amdgpu.*temp1' | awk '{print int($2)}' | tr '\n' ' '
输出会是类似50 47 52这样的格式。
内容的提问来源于stack exchange,提问作者ethereal1m
相关产品推荐
相关产品推荐

