获取可读的 CPU 频率

获取可读的 CPU 频率

我正在尝试将 CPU 频率的简化输出设置为 3 位数字,这样如果频率小于 1000,它将输出xxx Mhz,如果频率高于 1000,它将输出x.xx Ghz。我只能用 获得频率lscpu | sed -n 's/CPU MHz:[ \t]*//p',用 获得前 4 位数字lscpu | sed -n 's/CPU MHz:[ \t]*//p' | cut -c1-4,但我不确定如何解析它以实现所需的结果。

答案1

尝试:

lscpu | awk '/CPU MHz/{if($NF+0>1000)printf "%.3f GHz\n",$NF/1000; else printf "%.3f MHz\n",$NF}'

怎么运行的

  • /CPU MHz/{...}

    这将选择我们想要的行并仅对该行执行花括号中的命令。

  • if($NF+0>1000)printf "%.3f GHz\n",$NF/1000; else printf "%.3f MHz\n",$NF

    如果最后一个字段$NF大于 1000,则将其除以 1000,并将其打印为 GHz。否则,我们将其打印为 MHz。格式%.3f决定打印多少位有效数字。请根据您的喜好进行调整。

多行版本

对于那些喜欢将命令分布在多行上的人来说:

lscpu | awk '
    /CPU MHz/{
        if($NF+0>1000)
            printf "%.3f GHz\n",$NF/1000
        else
            printf "%.3f MHz\n",$NF
    }'

相关内容