Come posso generare una singola parola nel terminale

2

Il titolo non rende giustizia alla domanda. Sto scrivendo uno script di shell, da usare in conky, per ottenere lo stato della batteria del mio mouse e della tastiera. In precedenza, ho utilizzato upower per fare ciò:

dev='upower -e | grep "mouse_"'
upower -i $dev | grep 'state' | cut '-c26-36'

Come puoi vedere, ho usato il comando cut per tagliare il risultato in quanto la sua posizione non è mai cambiata.

Tuttavia, oggi ho trovato un bug in upower. Non può vedere il mio mouse essere caricato. Quindi, ho installato solaar da github che mostra lo stato corretto. Ma non sono sicuro di come tagliare il risultato:

solaar show mouse | grep 'Battery'
# outputs "Battery: N/A, recharging."

Non posso più usare cut perché il segmento 'N / A' ha una lunghezza arbitraria.

Idealmente, mi piacerebbe che lo script producesse qualsiasi parola che segue la prima virgola.

Come posso fare questo?

    
posta Twifty 16.03.2015 - 16:01

2 risposte

3

Con un singolo grep :

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

Questo dovrebbe fare:

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

^ : delimitatore, corrisponde all'inizio della stringa; . : corrisponde a qualsiasi carattere; * : corrisponde a qualsiasi numero di occorrenze (incluso 0 ) del carattere precedente; , : corrisponde a , ; : corrisponde a

    
risposta data kos 16.03.2015 - 16:10

Leggi altre domande sui tag