Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Saída do "top -bn1 + sed"

Estou utilizando uma máquina virtual com Ubuntu, a saída do comando top -bn1 | grep "CPU(s)" era %CPU(s): 0,0 us, 2,3 sy, 0,0 ni, 97,7 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st
Ao tentar rodar top -bn1 | grep "CPU(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" o terminal retornou o valor "0". Joguei toda essa saída no chat gpt, por algum motivo, no meu sistema a separação é por "," então tentei arrumar isso inserindo o seguinte comando: top -bn1 | grep "CPU(s)" | sed "s/.*, *\([0-9,]*\)%* id.*/\1/", mesmo assim, a saída era errada, números que nem existiam ali!
Por fim, o problema eram os números, na minha saída era "97,7 id", 2 dígitos antes da vírgula, o sed estava procurando apenas 1 dígito, o comando final ficou assim top -bn1 | grep "CPU(s)" | sed -E 's/.* ([0-9]+,[0-9]+) id.*/\1/', finalmente funcionou!
Resolvi postar aqui no fórum, pois alguém pode acabar enfrentando o mesmo problema!

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta
solução!

Oi, Juliene! Como vai?

Agradeço por compartilhar.

Gostei de ver como você analisou e resolveu o problema com sed. Sua observação sobre a diferença de separador decimal e o uso de expressões regulares com múltiplos dígitos faz todo o sentido e ajuda muito quem está praticando com o comando top.

Continue explorando essas variações entre sistemas, isso fortalece sua autonomia em shell script.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!