Для MX Linux это:
sudo apt-get install linux-cpupower
Также в MX linux вы можете открыть установщик пакетов MX и выполнить поиск «cpupower» в полном каталоге приложений
Для Зорин 15.2 его:
sudo apt-get install -y linux-tools-common linux-tools-$(uname -r)
Вы также можете перейти на Synaptic и выполнить поиск -linux tools -common. Вы также можете искать linux -tools -и вывод uname -r. бывший. linux -инструменты -5.3.0 -42 -универсальный
Если эти строки находятся в ФАЙЛЕ, и вам всегда нужны только первые числа после !
и до первого ,
, если они существуют, это должно работать
awk -F'[!,]' '{print$2}' FILE
Он принимает либо !
, либо ,
в качестве разделителя и показывает второе поле, которое будет первым числом между !
и ,
или сразу после !
, если в нем нет ,
. этой линии или перед ней.
Если есть ,
перед первым !
, верхний пример awk неприменим.
Вы также можете направить одну команду cut
в другую, в первой вы указываете !
в качестве разделителя и берете материал после первого !
, а во втором вы указываете ,
в качестве разделителя и берете материал перед первым ,
если он существует
cut -d'!' -f2 FILE | cut -d',' -f1
Вы можете использовать cut
, но для этого потребуется два прохода. Первый получит то, что идет после первого !
, а второй удалит все после ,
:
$ echo 'string/more!99,string/more!98,string/more!97' |
cut -d'!' -f2- | cut -d, -f1
99
Точно так же для случая, когда у вас нет ,
(, второй cut
здесь не нужен, я включаю его только для того, чтобы показать, что вы можете использовать точно такую же команду):
$ echo 'string/more!99' | cut -d'!' -f2- | cut -d, -f1
99
Другой вариант:sed
:
$ echo 'string/more!99,string/more!98,string/more!97' |
sed -E 's/^[^!]+!([0-9]+).*/\1/'
99
$ echo 'string/more!99' | sed -E 's/^[^!]+!([0-9]+).*/\1/'
99
илиperl
:
$ echo 'string/more!99,string/more!98,string/more!97' |
perl -pe 's/.+?!(\d+).*/\1/'
99
$ echo 'string/more!99' | perl -pe 's/.+?!(\d+).*/\1/'
99
Или ГНУgrep
$ echo 'string/more!99,string/more!98,string/more!97' |
grep -oP '^[^!]+!\K\d+'
99
$ echo 'string/more!99' | grep -oP '^[^!]+!\K\d+'
99
Все, что вам нужно, это синтаксис расширения параметров оболочки :это было сделано в тире
$ input='stringhere/morestring!99'
$ echo "${input#*!}"
99
За #
следует шаблон :кратчайшийпрефикс , соответствующий этому шаблону, удаляется.
$ input='string/more!99,string/more!98,string/more!97'
$ first=${input%%,*}
$ echo "${first#*!}"
99
За %%
следует шаблон :удаляется самый длинныйсуффикс , соответствующий шаблону.
${var#pattern)
--кратчайший соответствующий префикс удален. ${var##pattern)
--удален самый длинный совпадающий префикс. ${var%pattern)
--кратчайший суффикс удален. ${var%%pattern)
--удален самый длинный соответствующий суффикс.
Вы также можете использовать sed
. Использование GNU sed
с включенными расширенными регулярными выражениями:
sed -E 's/^[^!]*!([0-9]+).*$/\1/'
или -более портативный:
sed 's/^[^!]*!\([0-9]\{1,\}\).*$/\1/p'
Это будет соответствовать шаблону «все до первой !
, за которой следует одна или несколько цифр и, возможно, любые символы после этого до конца -строки -», и заменит всю строку только с частью «одна или несколько цифр».
~> echo 'string/more!99,string/more!98,string/more!97' | sed -E 's/^[^!]*!([0-9]+).*$/\1/'
99
Если есть несовпадающие строки, их можно подавить с помощью
sed -nE 's/^[^!]*!([0-9]+).*$/\1/p'
вместо этого. По умолчанию это ничего не выведет, а выведет вывод только в том случае, если найден соответствующий шаблон.