James Palmer Asked: 2020-07-15 14:59:27 +0800 CST2020-07-15 14:59:27 +0800 CST 2020-07-15 14:59:27 +0800 CST 获取人类可读的 CPU 频率 772 我试图将 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,但是我不确定如何解析它以获得所需的结果。 bash sed awk 1 个回答 Voted Best Answer John1024 2020-07-15T15:12:56+08:002020-07-15T15:12:56+08:00 尝试: 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 }'
尝试:
这个怎么运作
/CPU MHz/{...}
这将选择我们想要的行并仅为该行执行花括号中的命令。
if($NF+0>1000)printf "%.3f GHz\n",$NF/1000; else printf "%.3f MHz\n",$NF
如果最后一个字段
$NF
大于 1000,那么我们将其除以 1000 并将其打印为 GHz。否则,我们将其打印为 MHz。格式%.3f
决定打印多少有效数字。调整它以适合您的口味。多行版本
对于那些喜欢他们的命令分布在多行的人: