Как я могу произвести отдельное слово в терминале

Заголовок не дает справедливости вопроса. Я пишу сценарий оболочки, для использования в носатом, для получения состояния моей мыши и батареи клавиатуры. Ранее, я использовал 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', имеет произвольную длину.

Идеально, я хотел бы, чтобы сценарий произвел любое слово, которое следует за первой запятой.

Как я могу сделать это?

2
задан 16 March 2015 в 08:01

2 ответа

С синглом grep:

solaar show mouse | grep -oP 'Battery.*, \K.*'
3
ответ дан 5 October 2019 в 02:21

Это должно сделать:

solaar show mouse | grep 'Battery' | sed -r 's/^.*, //'

^: разделитель, соответствует запуску строки; .: соответствия любой символ; *: соответствия любое количество occurencies (включая 0) предыдущего символа; ,: соответствия ,; : соответствия

2
ответ дан 5 October 2019 в 02:21

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

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