Descrição
Script simples, para fazer a soma de valores a partir de uma lista de itens e seus valores.
Pode ser usado para cálculo de notas, pontos, etc.
Arquivo lista.txt:
========
Pedro 7
Maria 8
Pedro 8
Maria 6.5
Exemplo de uso:
$ ./somaNotas.sh lista.txt
Pedro 15
Maria 14.5
[ Download:
somaNotas.sh ]
[
Enviar nova versão ]
[ Esconder código-fonte ]
#!/bin/bash
# Por: Raimundo Portela - rai3mb@gmail.com
# Somar notas a partir de uma lista, independente da ordenação da mesma
# Exemplo de lista:
# Pedro 7
# Maria 8
# Pedro 8
# Maria 6.5
# Exemplo de uso:
# ./somaNotas.sh lista.txt
#=========================================================
ARQUIVO="$1"
SOMA=0
OLD=$( sort $ARQUIVO | head -n1 | cut -d' ' -f1 )
while read LINHA
do
NEW=$( echo $LINHA | cut -d' ' -f1 )
VALOR=$( echo $LINHA | cut -d' ' -f2 )
if [ "$NEW" = "$OLD" ]; then
SOMA=$( echo "$SOMA + $VALOR" | bc )
else
echo "$OLD $SOMA"
SOMA=$VALOR
fi
OLD="$NEW"
done < <( sort $ARQUIVO )
# para o ultimo registro
echo "$OLD $SOMA"
Scripts recomendados
Twitter via https pelo terminal
Verificação de PostgreSQL
zipxback.sh
Relatório Diario Sarg com Compactação!
Compactado e descompactador bem interessantee
Comentários
[1] Comentário enviado por
jarlisson em 06/08/2012 - 22:55h:
Rai, por que o '< <' ? qual a diferença pro '<<'?
[2] Comentário enviado por
rai3mb em 07/08/2012 - 23:05h:
O < <(...comando...) foi necessário pra colocar o ...comando... dentro do contexto do while ( no caso precisei por causa da variável $ARQUIVO ).
* Descobrir esse recurso recentemente ;-)
O shell é sempre cheio de surpresas ;-)