linux sed 和 lm 传感器

linux sed 和 lm 传感器

我正在使用以下

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

相关内容