我有一个丑陋的命令,它从传感器获取输出并去除不需要的字符和小数位,然后用带有尾随华氏符号的 awk 打印它。命令看起来像这样:
sensors -f | awk '/temp1/ { print $2 }' | sed 's/+//g' | awk '{ sub (/\..*/, ""); print $1 "°F" }'
此命令的输出如下所示。
101°F
命令有点乱,但它完成了工作,考虑到我对 awk 和 sed 的有限了解,这是值得一提的。我希望有更多知识的人可以告诉我如何压缩这个命令,因为我不清楚如何运行带有搜索模式的 awk,然后是替换,然后打印。任何帮助,将不胜感激。谢谢!
编辑:按要求输出 sensors -f。
acpitz-virtual-0
Adapter: Virtual device
temp1: +112.2°F (crit = +203.0°F)
temp2: +118.6°F (crit = +221.0°F)
coretemp-isa-0000
Adapter: ISA adapter
Core 0: +119.0°F (high = +212.0°F, crit = +212.0°F)
Core 1: +121.0°F (high = +212.0°F, crit = +212.0°F)
最佳答案
# Posix
sensors -f | sed -e '/^temp1:[[:blank:]]\{1,\}[+]/ !d' -e 's///;s/F.*/F/'
# GNU
sensors -f | sed '/^temp1:[[:blank:]]+[+]/!d;s///;s/F.*/F/'
另一种 sed 方法
关于regex - 压缩 awk/sed 管道命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32381161/