Como posso produzir uma única palavra no terminal

2

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?

    
por Twifty 16.03.2015 / 16:01

2 respostas

3

Com um único grep :

solaar show mouse | grep -oP 'Battery.*, \K.*'
    
por Sylvain Pineau 16.03.2015 / 16:19
2

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

    
por kos 16.03.2015 / 16:10