Como fazer sed apenas imprimir a expressão correspondente?
Eu quero reescrever strings como "Bateria 0: Carregando, 44%, carregando" para "Bateria: 44%". Eu tentei o seguinte:
sed -n '/\([0-9]*%\)/c Battery: \1'
Isso não funciona.
A "solução" comum é usar a pesquisa e substituir e combinar a linha inteira: sed -n 's/.*\([0-9]*%\).*/Battery: \1/p'
Agora, os * são muito gananciosos e o \ 1 é apenas o%.
Além disso, não quero corresponder mais do que preciso.
[[ $val =~ regex ]]
, junto com$BASH_REMATCH
. Além disso, como é o status da bateria, considere aumentar o intervalo para 5 ou 7 segundos. (A propósito, o Linux pode armazenar em cache o binário Perl na memória após o primeiro exec?)Talvez você pudesse
grep -o
(o -o é importante) para os valores requeridos e usá-los em seu script (?) Dessa forma, você poderia usar o valor de maneiras mais criativas ou talvez apenas envolto emecho
etcfonte