Somando dentro de um arquivo *.txt

1. Somando dentro de um arquivo *.txt

rodrigo carvalho
rorodrigo

(usa Debian)

Enviado em 03/07/2011 - 14:33h

Olá pessoal,

Recentimente estou tentando fazer um Script que some valores contidos em um arquivo .txt, por exemplo:

todo dia é gerado um valor, esse valor é concatenado em um arquivo txt, gostaria de uma ajudinha de como criar um script que some por exemplo o valor gerado segunda-feira com o valor gerado terça-feira, e assim por diante.


desde já agradeço.


  


2. Re: Somando dentro de um arquivo *.txt

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 03/07/2011 - 15:26h

Se a cada dia entrar uma nova linha com o valor desejado no arquivo.txt, basta você ler linha a linha e pegar esse valor.

VALOR=$(cat arquivo.txt | head -n 1)

Agora o bom é você disponibilizar como fica o layout desse arquivo para ficar mais fácil de ajudar.


Abraços


3. Shell Script

rodrigo carvalho
rorodrigo

(usa Debian)

Enviado em 03/07/2011 - 16:30h

Primeiramente obrigado por responder a minha pergunta.

Rai, vou tentar explicar a finalidade do Script para maior entendimento.

A cada dia é gerado um valor qualquer em um relatorio, porém não é gerado o acumulado desse valor, pois todo dia esse valor é apagado, inicialmente tive a idéia de pegar somente esse valor e concaternar em um arquivo de texto segue a idéia:

tail -10 valordiario | grep "vdiario" | tr -s ' ' | cut -d ' ' -f 3 >> arquivo.txt

Com a linha de comando acima iria pegar apenas o valor diario e colocar ele em um arquivo.txt, aii que entra o shell para somar (rsrs) eu não consigo achar uma solução para que esse valor concatenado no arquivo.txt some-se com os valores dos outros dias.

Desde já agradeço.


4. Re: Somando dentro de um arquivo *.txt

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 03/07/2011 - 19:32h

Se todo dia for adicionado uma nova linha nesse arquivo, basta fazer um loop lendo linha por linha e coletando o valor e somando:

VALOR=0
for i in $(seq $(cat arquivo.txt | wc -l | cut -d" " -f 1))
do
VALORDODIA=$(cat arquivo.txt | head -n $i | tail -n 1)
VALOR=$(($VALOR+$VALORDODIA))
done

echo "O total é $VALOR"

Veja se ajuda.

Abraços




5. Re: Somando dentro de um arquivo *.txt

Elder Marco
eldermarco

(usa Fedora)

Enviado em 03/07/2011 - 21:24h

Não seria melhor você disponibilizar alguns arquivos de exemplo para se ter uma ideia de como estão os valores nele?

Em todo caso, se você quer criar um arquivo com esses valores, poderia então gerar um arquivo desse tipo.

$ cat arquivo.txt
5
8
8
9
10
1.5
12.5
30
84

E somar o que está aí com o comando:

$ bc <<< "$(tr '\n' '+' < arquivo.txt | sed 's/+$//')"

Pode-se também fazer de outras formas. Por exemplo:

$ awk '{ soma+=$1 } END{ printf "%.2f\n", soma }' arquivo.txt
168.00






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts