Parse em shellscript [RESOLVIDO]

1. Parse em shellscript [RESOLVIDO]

guzman
Katsu01

(usa Debian)

Enviado em 14/02/2019 - 09:36h

Olá, sou iniciante no uso de shellscript.

Eu preciso realizar o parse da saída do comando arm-none-eabi-size:


$ ./arm-none-eabi-size -d exe1.elf
text data bss dec hex filename
19056 80 2100 21236 52f4 /work/HW-BOT-00004/Debug/HW-BOT-00004.elf


Ex:

Eu preciso liar o valor 80 ao texto 'data', alguém pode me dar uma luz de como resolver isso ?

Desde já agradeço...

Katsu01




  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 14/02/2019 - 18:24h


Katsu01 escreveu:

Olá msolviver,

Mil desculpas... acabei escrevendo errado e não vi.

Eu preciso gerar um arquivo mostrando o consumo de Flash e RAM do projeto de um microcontrolador.
Digamos que o microcontrolador tem Flash de tamanho de 128Kbytes e RAM de 68Kbytes

Usando a saída do comando abaixo:


text data bss dec hex filename
19056 80 2100 21236 52f4 /work/HW-BOT-00004/Debug/HW-BOT-00004.elf


Eu preciso realizar uns cálculos e gerar um arquivo de saída assim.

# Arquivo Consumo.txt

projeto: /work/HW-BOT-00004/Debug/HW-BOT-00004.elf
% de Flash consumida: 14,53%
% de RAM Consumda: 3,13 %

# Calculo para medir a porcentagem de Flash Consumida:
# (128 * 1024) ------------- 100%
# 19056 ------------- X
# X = (19056 * 100) / (128 * 1024) = 14,53%

# Calculo para medir a porcentagem de RAM Consumida:
# 68 * 1024 ------------- 100%
# (80 + 2100) ----------- Y
# Y = ( 80 + 2100 ) * 100 / ( 68 * 1024 ) = 3,13 %


Vamos lá..
Veja se é isso...
TFlash=128
TRam=68


# Calculo para medir a porcentagem de Flash Consumida:
# (128 * 1024) ------------- 100%
# 19056 ------------- X
# X = (19056 * 100) / (128 * 1024) = 14,53%

awk '/^[0-9]/ {printf "%s%%\n" ,($1*100)/('${TFlash}'*1024)}' Saida_do_comando.txt 


# Calculo para medir a porcentagem de RAM Consumida:
# 68 * 1024 ------------- 100%
# (80 + 2100) ----------- Y
# Y = ( 80 + 2100 ) * 100 / ( 68 * 1024 ) = 3,13 %
awk '/^[0-9]/ {printf "%.2f%%\n" ,(($2+$3)*100)/('${TRam}'*1024)}' Saida_do_comando.txt 


Juntando tudo e usando o pipe apos o comando....
COMANDO|awk '/^[0-9]/ {printf "X = %.2f%%\n" ,($1*100)/('${TFlash}'*1024);printf "Y = %.2f%%\n" ,(($2+$3)*100)/('${TRam}'*1024)}' 

X = 14.5386%
Y = 3.13%


É isso...
Se a resposta foi satisfatória/esclarecedora, não esqueça de marcar o Tópico como RESOLVIDO, e ESCOLHER a MELHOR RESPOSTA . . . rsrsrs
Att.:
Marcelo OLiver

3. Re: Parse em shellscript [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 14/02/2019 - 16:07h


Boa tarde.
Não endendi o que vc precisa fazer.
Eu preciso liar o valor 80 ao texto 'data', alguém pode me dar uma luz de como resolver isso ?
Poste um exemplo da saida que vc quer...


4. Re: Parse em shellscript

guzman
Katsu01

(usa Debian)

Enviado em 14/02/2019 - 16:34h

Olá msolviver,

Mil desculpas... acabei escrevendo errado e não vi.

Eu preciso gerar um arquivo mostrando o consumo de Flash e RAM do projeto de um microcontrolador.
Digamos que o microcontrolador tem Flash de tamanho de 128Kbytes e RAM de 68Kbytes

Usando a saída do comando abaixo:


text data bss dec hex filename
19056 80 2100 21236 52f4 /work/HW-BOT-00004/Debug/HW-BOT-00004.elf


Eu preciso realizar uns cálculos e gerar um arquivo de saída assim.

# Arquivo Consumo.txt

projeto: /work/HW-BOT-00004/Debug/HW-BOT-00004.elf
% de Flash consumida: 14,53%
% de RAM Consumda: 3,13 %

# Calculo para medir a porcentagem de Flash Consumida:
# (128 * 1024) ------------- 100%
# 19056 ------------- X
# X = (19056 * 100) / (128 * 1024) = 14,53%

# Calculo para medir a porcentagem de RAM Consumida:
# 68 * 1024 ------------- 100%
# (80 + 2100) ----------- Y
# Y = ( 80 + 2100 ) * 100 / ( 68 * 1024 ) = 3,13 %



5. Re: Parse em shellscript

guzman
Katsu01

(usa Debian)

Enviado em 15/02/2019 - 15:41h

Olá msoliver

Consegui resolver o problema, muito obrigado pela ajuda.

Estou compartilhando o arquivo final para caso mais alguem algum dia tenha a mesma duvida.

Att. Katsu01



#!/bin/bash
# calcula_consumo.sh
#
# Rotina para realizar o calculos de consumo de Flash e RAM
# a partir do arquivo .elf
#

########## PARAMETROS ##########

TFLASH=128
TRAM=68
ELF_FILE="/work/HW-BOT-00004/Debug/HW-BOT-00004.elf"

# Comando para recuperar o tamanho da aplicação.
COMANDO="./arm-none-eabi-size -d ${ELF_FILE}"

##################################################

echo "Arquivo: ${ELF_FILE}" > consumo.txt

# Realiza parse e os calculos de consumo
$COMANDO |awk '/[0-9]/ {printf "X = %.2f%%\n" ,($1*100)/('${TFLASH}'*1024);printf "Y = %.2f%%\n" ,(($2+$3)*100)/('${TRAM}'*1024)}' >> consumo.txt




6. Re: Parse em shellscript [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 15/02/2019 - 17:35h


Katsu01 escreveu:

Olá msoliver

Consegui resolver o problema, muito obrigado pela ajuda.

Estou compartilhando o arquivo final para caso mais alguem algum dia tenha a mesma duvida.

Att. Katsu01



#!/bin/bash
# calcula_consumo.sh
#
# Rotina para realizar o calculos de consumo de Flash e RAM
# a partir do arquivo .elf
#

########## PARAMETROS ##########

TFLASH=128
TRAM=68
ELF_FILE="/work/HW-BOT-00004/Debug/HW-BOT-00004.elf"

# Comando para recuperar o tamanho da aplicação.
COMANDO="./arm-none-eabi-size -d ${ELF_FILE}"

##################################################

echo "Arquivo: ${ELF_FILE}" > consumo.txt

# Realiza parse e os calculos de consumo
$COMANDO |awk '/[0-9]/ {printf "X = %.2f%%\n" ,($1*100)/('${TFLASH}'*1024);printf "Y = %.2f%%\n" ,(($2+$3)*100)/('${TRAM}'*1024)}' >> consumo.txt



Boa tarde Katsu01.
Não é necessário gerar a var "COMANDO",
faça:
./arm-none-eabi-size -d ${ELF_FILE}|awk '/[0-9]/ {printf "X = %.2f%%\n" ,($1*100)/('${TFLASH}'*1024);printf "Y = %.2f%%\n" ,(($2+$3)*100)/('${TRAM}'*1024)}' >> consumo.txt 

OBS.: Marcando minha RESPOSTA como A MELHOR, ganho uns pontinhos.... O que incentiva a continuar colaborando/compartilhando .... conhecimentos...

Em tempo: Conhece a família "Zara" ai de Atibaia?

Att.:
Marcelo Oliver


7. Re: Parse em shellscript [RESOLVIDO]

guzman
Katsu01

(usa Debian)

Enviado em 18/02/2019 - 11:24h

Vish não conheço não... eu conheço soh a família Zanini apenas.

Att. Katsu01






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts