Получить читаемую человеком частоту процессора

Я пытаюсь получить упрощенный вывод частоты процессора до 3 цифр, таким образом, что если частота меньше 1000, она выдаст ххх МГц , а если она превысит 1000, то превзойдет х.хх ГГц . Я могу получить только частоту с lscpu | sed -n 's / CPU MHz: [\ t] * // p' и первые 4 цифры с lscpu | sed -n 's / CPU MHz: [\ t] * // p' | cut -c1-4 , однако я не уверен, как разобрать это для достижения желаемого результата.

1
задан 15 July 2020 в 01:59

1 ответ

Try:

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 ГГц \ n", $ NF / 1000; иначе printf "% .3f МГц \ n", $ NF

    Если конечное поле, $ NF , больше 1000, то мы делим его на 1000 и печатаем как ГГц. В противном случае мы печатаем его как МГц. Формат %. 3f определяет, сколько значащих цифр будет напечатано. Настройте это по своему вкусу.

Многострочная версия

Для тех, кто предпочитает, чтобы их команды распределялись по нескольким строкам:

lscpu | awk '
    /CPU MHz/{
        if($NF+0>1000)
            printf "%.3f GHz\n",$NF/1000
        else
            printf "%.3f MHz\n",$NF
    }'
3
ответ дан 30 July 2020 в 22:07

Другие вопросы по тегам:

Похожие вопросы: