我正在使用以下
while true; do sensors | grep 'Core 1'| sed -r 's/^.*: +(.*) +[(].*$/\1/' >> lmdata.txt; sleep 300; done
格式化
Core 1: +68.0°C (crit = +100.0°C)
到
+68.0'C
我如何更改 sed 命令以仅获取临时值
68
谢谢你的帮助
答案1
使用sed
:
sensors|sed -nE '/Core 1:/s/[^+]*\+([[:digit:]]+).*/\1/p'
用通俗易懂的语言来说,可以这样写:
sed
在非回显模式下与扩展正则表达式一起使用:
- 线上匹配核心1:
- 搜索...
- 除 + 之外的任何内容
- 然后是一个+
- 然后保存任意多于1位的数字
- 然后匹配到行尾
- 用。。。来代替...
- 第一个保存的花样
- 并打印结果
答案2
您应该能够将命令的 sed 部分更新为此,而无需重组任何其他内容:
sed -r 's/^.*: +([[:digit:]]+).* +[(].*$/\1/'
答案3
将 grep 与 perl-regexp 结合使用:
$ sensors|grep -oP "Core 1:\s*\+\K[0-9]+"
70