Somar quantidade a partir de um arquivo [RESOLVIDO]

25. Re: Somar quantidade a partir de um arquivo [RESOLVIDO]

iudemar
iudemar

(usa Slackware)

Enviado em 25/01/2016 - 16:35h

Renan, segue meu script completo:

#!/bin/bash -x

rm -f /tmp/soma.txt
rm -f /tmp/soma1.txt

LER=$(ls /home/maresia/Downloads/testando)



for i in $LER ;
do
cd /home/iuedmar/Downloads/testando
cat $i >> /tmp/soma.txt
cat /tmp/soma.txt | awk '{print $6}' > /tmp/soma1.txt ;
done

#### realizando contagem do arquivo ###

arq=$(cat /tmp/soma1.txt)
soma=0
for i in $arq; do
soma=$(($i+$soma))
done
echo $soma

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

A primeira etapa é lida normalmente.. eu tenho varios arquivos dentro do diretorio testando, os arquivos são lidos e o conteudo deles jogado dentro de um arquivo chamado soma.txt. DEpois esse arquivo é tratado e jogado no soma1.txt

Quando venho para o que me interessa, que é a soma deste soma1.txt apresenta o erro de sintaxe.
O seu funcionou pelos dois metodos... por favor tem como me enviar a saída do seu que você fez para eu comparar aqui.. pois não vejo nada de errado.

Obrigado pela ajuda Renan.



  


26. Re: Somar quantidade a partir de um arquivo [RESOLVIDO]

Renan Arantes
R3nan

(usa Debian)

Enviado em 25/01/2016 - 16:43h

ja tentou usar em scripts separados so pra teste ?


./soma.sh
++ cat lista.txt
+ arq='0000000002
0000000002
0000000001
0000000000
0000000000
0000000002
0000000002
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000002
0000000002
0000000000
0000000002
0000000002
0000000002
0000000001
0000000000
0000000000
0000000002
0000000002
0000000000
0000000000
0000000000
0000000002
0000000000
0000000000
0000000000
0000000000
0000000002
0000000002
0000000000
0000000002'
+ soma=0
+ for i in '$arq'
+ soma=2
+ for i in '$arq'
+ soma=4
+ for i in '$arq'
+ soma=5
+ for i in '$arq'
+ soma=5
+ for i in '$arq'
+ soma=5
+ for i in '$arq'
+ soma=7
+ for i in '$arq'
+ soma=9
+ for i in '$arq'
+ soma=9
+ for i in '$arq'
+ soma=9
+ for i in '$arq'
+ soma=9
+ for i in '$arq'
+ soma=9
+ for i in '$arq'
+ soma=9
+ for i in '$arq'
+ soma=9
+ for i in '$arq'
+ soma=9
+ for i in '$arq'
+ soma=11
+ for i in '$arq'
+ soma=13
+ for i in '$arq'
+ soma=13
+ for i in '$arq'
+ soma=15
+ for i in '$arq'
+ soma=17
+ for i in '$arq'
+ soma=19
+ for i in '$arq'
+ soma=20
+ for i in '$arq'
+ soma=20
+ for i in '$arq'
+ soma=20
+ for i in '$arq'
+ soma=22
+ for i in '$arq'
+ soma=24
+ for i in '$arq'
+ soma=24
+ for i in '$arq'
+ soma=24
+ for i in '$arq'
+ soma=24
+ for i in '$arq'
+ soma=26
+ for i in '$arq'
+ soma=26
+ for i in '$arq'
+ soma=26
+ for i in '$arq'
+ soma=26
+ for i in '$arq'
+ soma=26
+ for i in '$arq'
+ soma=28
+ for i in '$arq'
+ soma=30
+ for i in '$arq'
+ soma=30
+ for i in '$arq'
+ soma=32
+ echo 32
32




27. Re: Somar quantidade a partir de um arquivo [RESOLVIDO]

iudemar
iudemar

(usa Slackware)

Enviado em 25/01/2016 - 16:50h

Renan,

olha as linhas que você me passou:

#/bin/bash -x

arq=$(cat /tmp/soma1.txt)
soma=0
for i in $arq; do
soma=$(($i+$soma))
done
echo $soma


é isso mesmo? confirma pra mim por favor.. por rodei em um script separado e deu erro do mesmo jeito:
./soma.sh
+0")erro de sintaxe: operador aritmético inválido (token com erro é "
0

obrigado.


28. Re: Somar quantidade a partir de um arquivo

Renan Arantes
R3nan

(usa Debian)

Enviado em 25/01/2016 - 16:56h

ta faltando um ! no inicio é so copiar e colar e mudar o lista.txt pro seu arquivo


#!/bin/bash
arq=$(cat lista.txt)
soma=0
for i in $arq; do
soma=$(($i+$soma))
done
echo $soma



29. Re: Somar quantidade a partir de um arquivo [RESOLVIDO]

iudemar
iudemar

(usa Slackware)

Enviado em 25/01/2016 - 17:02h

Não Renan,

Apresenta o mesmo erro.. mas deixa pra lá Renan;;

EU agradeço muito sua ajuda de verdade.. obrigado.

Vlw pela força, precisando também, estou aqui.

Add ao no gmail para qualquer coisa..
iudemarqueiroz@gmail.com

ABração;.


30. Re: Somar quantidade a partir de um arquivo [RESOLVIDO]

Renan Arantes
R3nan

(usa Debian)

Enviado em 25/01/2016 - 17:11h

loko! kkkkk aqui funciona... teste em outra maquina, vá fazendo testes que vc acha o detalhe... certamente é detalhe


31. Re: Somar quantidade a partir de um arquivo [RESOLVIDO]

iudemar
iudemar

(usa Slackware)

Enviado em 25/01/2016 - 17:20h

pode crê.. vou testar em outra maquina mesmo..


vlwwww


32. Re: Somar quantidade a partir de um arquivo [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 26/01/2016 - 02:28h

iudemar escreveu:

olha só a saída do comando como fica:

root@bob:/home/maresia/Downloads# paste -s -d + /tmp/soma1.txt | bc
(standard_in) 1: illegal character: ^M
(standard_in) 1: illegal character: ^M
(standard_in) 1: illegal character: ^M
(standard_in) 1: illegal character: ^M

Não sei o que pode ser.
##########################################################################################################

Bom dia!
Esse ^M, indica que o seu arquivo esta no formato DOS/Win
Para resolver, faça:
sed -i 's/^M//' NUMEROS.txt 


ATENÇÃO:
Para digitar o ^M, faça do seguinte modo:
pressione Ctrl-V depois Ctrl-M

SOMANDO com o AWK:

Temos
cat NUMEROS.txt
00010
00011
00012
00013
00014
00015

awk '{TT += $1;}END {print "TOTAL = " TT}' NUMEROS.txt 

TOTAL = 75

BRINCANDO com o awk
Contando até 500000 (Quinhentos mil) e somando . . .
echo -e {1..500000}'\n'|sed 's/ //'|awk '{TT += $1;}END {print "TOTAL = " TT}' 

TOTAL = 1.25e+11

Abraço,
Marcelo Oliver

PS.:
Se o problema foi resolvido, por favor....
marque como resolvido.
Agora, se te ajudei, achar que a solução foi boa/interessante, e que eu fui "muito legal" em responder neste horário,
Marque como melhor resposta... Rsrsrs




33. Re: Somar quantidade a partir de um arquivo

Perfil removido
removido

(usa Nenhuma)

Enviado em 26/01/2016 - 02:39h

Com esse monte de zeros antes dos dígitos BASH pensa que são números em OCTAL.
Por isto que dá erro se tentar somar 008. Dígitos octais vão de 0 até 7.
E se tentar somar 011 com 011 vai dar 18 em decimal.
Mas se usar a calculadora bc não dará este erro.

Das duas uma: ou tira-se os zeros do começo dos números ou usa-se bc.

----------------------------------------------------------------------------------------------------------------
http://24.media.tumblr.com/tumblr_m62bwpSi291qdlh1io1_250.gif

# apt-get purge systemd

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



34. Re: Somar quantidade a partir de um arquivo [RESOLVIDO]

iudemar
iudemar

(usa Slackware)

Enviado em 26/01/2016 - 09:19h

Bom dia Marcelo,

OLha só, joguei o comando que você me passou aqui.. o resultado não deu certo não, veja só:

root@bob:/tmp# paste -s -d + /tmp/soma11.txt |bc | sed -i 's/^M//'
sed: (standard_in) 1: illegal character: ^M
(standard_in) 1: illegal character: ^M
(standard_in) 1: illegal character: ^M
(standard_in) 1: illegal character: ^M
(standard_in) 1: illegal character: ^M
(standard_in) 1: illegal character: ^M
(standard_in) 1: illegal character: ^M
(standard_in) 1: illegal character: ^M
(standard_in) 1: illegal character: ^M
(standard_in) 1: nenhum arquivo de entradaillegal character: ^M

(standard_in) 1: illegal character: ^M

Seria isso mesmo ou me atrapalhei na linha de comandos?

Grato pela ajuda de vocês.




35. Re: Somar quantidade a partir de um arquivo [RESOLVIDO]

Renan Arantes
R3nan

(usa Debian)

Enviado em 26/01/2016 - 09:44h

nd ainda velho? copia manualmente o conteúdo desse arquivo e coloca em outro e testa


36. Re: Somar quantidade a partir de um arquivo [RESOLVIDO]

iudemar
iudemar

(usa Slackware)

Enviado em 26/01/2016 - 10:19h

Po Renan, quando eu copio e colo ele roda legal..
Agora o Marcelo comentou sobre o uso do sed para remover as linhas que se iniciam com ^M, realmente quando eu jogo a linha de comando abaixo:

cat /tmp/soma1.txt |sort |tac |head |rev > /tmp/ii.txt

ele joga no arquivo ii.txt o ^M junto ao numero assim:
^M2
^M2
^M2
^M2
^M2
^M2
^M2
^M2
^M1
^M1

Como remover esse ^M com o sed? pois a linha passada pelo Marcelo não remove
cat /tmp/soma1.txt |sort |tac |head |rev | sed -i 's/^M// > /tmp/oo.txt
>

apresenta erro.. to quase conseguindo, se esse ^M sair vai rodar..

ou eu desisto se não rodar.








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts