Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 将cpu温度存储在变量中_Regex_Linux_Awk_Grep_Temperature - Fatal编程技术网

Regex 将cpu温度存储在变量中

Regex 将cpu温度存储在变量中,regex,linux,awk,grep,temperature,Regex,Linux,Awk,Grep,Temperature,我试图从Linux shell命令中提供的lm sensors解析出温度信息:$sensors 我怀疑我把这件事搞得太糊涂了。第一:CPU温度是否存在预先存在的环境变量或其他因素 我尝试使用以下命令: $ sensors -A -f | awk '{print $2}' +136.4°F 但我得到了一些不想要的空白,和一些不想要的其他字符。比如+。度符号,F 然后我试着用以下方法将数字变灰: sensors-A-f | awk'{print$2}'| egrep-o[0-9]\.?[0-9]

我试图从Linux shell命令中提供的lm sensors解析出温度信息:
$sensors

我怀疑我把这件事搞得太糊涂了。第一:CPU温度是否存在预先存在的环境变量或其他因素

我尝试使用以下命令:

$ sensors -A -f | awk '{print $2}'

+136.4°F
但我得到了一些不想要的空白,和一些不想要的其他字符。比如+。度符号,F

然后我试着用以下方法将数字变灰:
sensors-A-f | awk'{print$2}'| egrep-o[0-9]\.?[0-9]
但每次,我都会得到小数点前的数字,但我似乎无法得到小数点后的数字

我要做的就是将系统cpu温度放入一个变量中。这是最好的路线吗?请帮助我获取cpu温度

更新:

sensors-A-f | awk'{print$2+0}'
0
77
0

它将空格替换为0,但仍然不会给出小数点后的数字。

您的正则表达式匹配一个单位数、一个(可选)小数点,然后是另一个单位数

试试这个正则表达式:

[0-9]+(\.[0-9]+)?
这将匹配多个数字,后跟一个小数点和更多数字。注意
“+”
表示“一个或多个”和
(…)


(为了完整起见,您可能应该在正则表达式中包含一个前导的
'-'
,但不知何故,我认为您不太可能在实践中看到这一点。)

您的正则表达式匹配一个单位数字、一个(可选)十进制小数点,然后是另一个单位数字

试试这个正则表达式:

[0-9]+(\.[0-9]+)?
这将匹配多个数字,后跟一个小数点和更多数字。注意
“+”
表示“一个或多个”和
(…)


(为了完整起见,您可能应该在正则表达式中包含一个前导的
'-'
,但不知何故,我认为您不太可能在实践中看到这一点。)

如果python适合您

import subprocess
p1 = subprocess.Popen(["sensors"], stdout=subprocess.PIPE)
output = p1.communicate()
A = output[0]
temp = float(A[56:60])
输出:

In [10]: temp
Out[10]: 57.0

如果python适合你

import subprocess
p1 = subprocess.Popen(["sensors"], stdout=subprocess.PIPE)
output = p1.communicate()
A = output[0]
temp = float(A[56:60])
输出:

In [10]: temp
Out[10]: 57.0

通常,当您已经在使用awk时,不需要使用
grep
。您的命令可能简化为:

sensors -A -f | awk '{print $2+0}'
测试:


通常,当您已经在使用awk时,不需要使用
grep
。您的命令可能简化为:

sensors -A -f | awk '{print $2+0}'
测试:

试试这个:

export LC_ALL=C
sensors -A -f | awk 'NF{print $2+0}'
我怀疑您遇到的问题是,默认区域设置使用逗号而不是句点来分隔数字

如果不是这样的话,请按照已经多次提出的要求,更新您的问题,以显示系统上传感器-a-f的输出,让我们有机会为您提供帮助。

尝试以下方法:

export LC_ALL=C
sensors -A -f | awk 'NF{print $2+0}'
我怀疑您遇到的问题是,默认区域设置使用逗号而不是句点来分隔数字


如果不是这样的话,那么按照已经多次提出的要求,请更新您的问题,以在您的系统上显示传感器-A-f的输出,让我们有机会为您提供帮助。

您是否可以使用传感器-A-f的输出和要提取的零件更新问题?复制命令
传感器-A-f
,在命令提示符下执行,复制输出,单击问题下的,粘贴输出,选择输出,按Ctrl+K,然后单击保存编辑。@j0h:有关更新,请参阅更新的ASN。是否使用
传感器-A-f
的输出和要提取的零件更新问题?复制命令
传感器-A-f
,在命令提示符下执行,复制输出,单击问题下的,粘贴输出,选择输出,按Ctrl+K,然后单击保存编辑。@j0h:有关更新,请参阅updated AsnVeraldo single quote the argument of egrep,否则将进行文件名扩展,如
。|egrep-o'[0-9]+(\.[0-9]+)?'
还可以单引号引用egrep的参数,否则它将受到文件名扩展的影响,如
。|白鹭-o'[0-9]+(\[0-9]+)?'
+1;利用
awk
将以数字表示形式开头的任何内容解释为数字上下文中的数字(强制使用
+0
)。要同时忽略空行,请使用
awk'$0!=“{打印2美元+0 } /代码> .@ MKLMunt0来忽略空白行,您应该做代码> AWK 'NF{打印2美元+0 } < /Cord> @ JayPal:好点,谢谢(<代码> $0!=)只忽略真正的空行,而<代码> NF(或<代码> NF> 0 < /代码>)忽略空行-即空或所有空白线)+1;利用
awk
将以数字表示形式开头的任何内容解释为数字上下文中的数字(强制使用
+0
)。要同时忽略空行,请使用
awk'$0!=“{打印2美元+0 } <代码> .@ MKLMunt0忽略空白行,您应该做代码> AWK 'NF{打印2美元+0 } < /Calp> @ JayPal:好点,谢谢(<代码> $0!=)只忽略真正的空行,而<代码> NF(或<代码> NF> 0 < /代码>)忽略空白行(即空的或空白的所有行)。