Com um único grep
:
solaar show mouse | grep -oP 'Battery.*, \K.*'
O título não dá a questão de justiça. Estou escrevendo um script de shell, para uso em conky, para obter o status da bateria do meu mouse e teclado. Anteriormente, usei upower
para fazer isso:
dev='upower -e | grep "mouse_"'
upower -i $dev | grep 'state' | cut '-c26-36'
Como você pode ver, usei o comando cut
para aparar o resultado, pois a posição nunca foi alterada.
No entanto, hoje eu encontrei um bug no upower. Não pode ver meu mouse sendo carregado. Então, eu instalei o solaar do github que exibe o status correto. Mas não sei como aparar o resultado:
solaar show mouse | grep 'Battery'
# outputs "Battery: N/A, recharging."
Eu não posso mais usar o cut
porque o segmento 'N / A' tem um comprimento arbitrário.
Idealmente, gostaria que o script emitisse qualquer palavra que acompanhasse a primeira vírgula.
Como posso fazer isso?
Com um único grep
:
solaar show mouse | grep -oP 'Battery.*, \K.*'
Isso deve ser feito:
solaar show mouse | grep 'Battery' | sed -r 's/^.*, //'
^
: delimiter, corresponde ao início da string; .
: corresponde a qualquer caractere; *
: corresponde a qualquer número de ocorrências (incluindo 0
) do caractere anterior; ,
: corresponde a ,
; : corresponde a