Заголовок не дает справедливости вопроса. Я пишу сценарий оболочки, для использования в носатом, для получения состояния моей мыши и батареи клавиатуры. Ранее, я использовал upower
сделать это:
dev=`upower -e | grep "mouse_"`
upower -i $dev | grep 'state' | cut '-c26-36'
Как Вы видите, я использовал cut
управляйте для обрезки результата, поскольку это - положение, никогда не изменялся.
Однако сегодня я нашел ошибку в upower. Это не видит, что моя мышь заряжена. Так, я установил солнечную энергию от GitHub, который действительно отображает корректное состояние. Но я не уверен, как обрезать результат:
solaar show mouse | grep 'Battery'
# outputs "Battery: N/A, recharging."
Я не могу использовать cut
больше, потому что сегмент, and/A', имеет произвольную длину.
Идеально, я хотел бы, чтобы сценарий произвел любое слово, которое следует за первой запятой.
Как я могу сделать это?
С синглом grep
:
solaar show mouse | grep -oP 'Battery.*, \K.*'
Это должно сделать:
solaar show mouse | grep 'Battery' | sed -r 's/^.*, //'
^
: разделитель, соответствует запуску строки; .
: соответствия любой символ; *
: соответствия любое количество occurencies (включая 0
) предыдущего символа; ,
: соответствия ,
; : соответствия