Manipular um arquivo txt como se fosse uma planilha de calculo
Publicado por Rodney Wellington C. Barreto 19/10/2004
[ Hits: 9.667 ]
Homepage: http://rodneybr.t35.com
Este script faz uma pesquisa de campos num arquivo txt e lista na telas os resultados fazendo pequenos calculos, utiliza desde awk, fgrep, wc, sed, until, case, grep, fortamacao de cores no terninal e como fazer e utilizar pequenas funcoes. Um pequeno exemplo pra quem gosta de manipular arquivos textos como se fossem planilhas de cauculo. E necessario um arquivo texto para que ele funcione!
#!/bin/bash
#
# listacheque - Mostra a sistuacao do(s) cheque(s). E necessario o arquivo texto (cheques.txt)
#
# Autor: rodney barreto e-mail: rodney_qg@yahoo.com.br
# 28/09/2004 versao 1.0
#---------------------------------------------------------------------------------------------
# Situacao do cheque:
# aberto - baixado - cancelado
# Funcoes de Cabecalho e Rodape
Cabecalho(){
echo
tput bold
echo 'Numero Pago a(o) Data Pre_Data Valor Situacao'
tput sgr0
# Deixa a linha abaixo, da cor amarela
echo -e '{FONTE}33[33;1m====== ========================= ======== ======== ========= ========={FONTE}33[m'
}
Rodape(){
echo -e '{FONTE}33[33;1m====== ========================= ======== ======== ========= ========={FONTE}33[m'
}
clear
FIM=
until [ "$FIM" ]
do
# Menu
tput cup 1 5
tput bold
echo 'OPCAO - ACAO'
tput sgr0
tput cup 2 5
echo -ne '{FONTE}33[33;1m===== ===={FONTE}33[m'
tput cup 3 6
echo '(A) Lista cheque(s) aberto(s)'
tput cup 4 6
echo '(B) Lista cheque(s) baixado(s)'
tput cup 5 6
echo '(C) Lista cheque(s) cancelado(s)'
tput cup 6 6
echo '(T) Lista todos os cheques'
tput cup 7 6
echo '(S) Sair do programa'
tput cup 9 5
echo -n 'Escolha a opcao: '
read OPCAO
# Fim do Menu
FIM=1
case "$OPCAO" in
[Aa])
Cabecalho
# Imprime cheques abertos
fgrep aberto cheques.txt | tr _ ' '
Rodape
# Calcula a quantidade e o valor dos cheques abertos
fgrep aberto cheques.txt | awk '{} END {print NR,"cheque(s)"}'
fgrep aberto cheques.txt | awk '{VALOR=VALOR+$5} END {print "Total R$ ",VALOR}'
echo
read
FIM=
clear
;;
[Bb])
Cabecalho
# Imprime cheques baixados
fgrep baixado cheques.txt | tr _ ' '
Rodape
# Conta a quantidade e o valor dos cheques baixados
fgrep baixado cheques.txt | awk '{} END {print NR,"cheque(s)"}'
fgrep baixado cheques.txt | awk '{VALOR=VALOR+$5} END {print "Total R$ ",VALOR}'
echo
read
FIM=
clear
;;
[Cc])
Cabecalho
# Imprime cheques cancelados
fgrep cancelado cheques.txt
Rodape
# Conta a quantidade de cheques cancelados
echo "`sed -n '/*/p' cheques.txt | wc -l` cheque(s)"
echo
read
FIM=
clear
;;
[Tt])
Cabecalho
# Lista todos os cheques
cat cheques.txt | tr _ " "
echo
Rodape
# Conta a quantidade total de cheques
grep '.*' cheques.txt | awk '{} END {print NR,"cheques"}'
grep '.*' cheques.txt | awk '{VALOR=VALOR+$5} END {print "Total R$ ",VALOR}'
echo
read
FIM=
clear
;;
[Ss]) # Sai do programa
echo
exit
;;
*) # Opcao invalida para qualquer outro caracter
echo
echo "Opcao invalida!"
echo
read
FIM=
clear
;;
esac
done
# FIM do script
Exempo do arquivo cheques.txt
======================
850001 Boteco_da_esquina 07/04/04 -------- 21,45 baixado
850002 Super_Mercado 14/05/04 -------- 31,48 baixado
850003 * -------- -------- 00,00 cancelado
850004 Dist._Pinguins_Tux 03/06/04 -------- 53,33 baixado
850005 Dist._Pinguins_Tux 03/06/04 03/07/04 53,33 baixado
850006 Dist._Pinguins_Tux 03/06/04 03/08/04 53,33 baixado
850007 Taxi_do_Aeroporto 22/07/04 10/08/04 350,00 baixado
850008 Compra_da_Microsoft 27/08/04 27/09/04 99,67 baixado
850009 Compra_da_Microsoft 27/08/04 27/10/04 99,67 aberto
850010 Compra_da_Microsoft 27/08/04 27/11/04 99,67 aberto
850011 Oficina 03/09/04 -------- 124,00 baixado
850012 Oficina 03/09/04 03/10/04 124,00 baixado
Monitorar o funcionamento do FTP
Uso de variáveis com a linguagem Ruby
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
[Resolvido] VirtualBox can't enable the AMD-V extension
Como verificar a saúde dos discos no Linux
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Não consigo instalar distro antiga no virtualbox nem direto no hd (11)
Quais os códigos mais dificeis que vcs sabem fazer? (12)
systemd-resol... precisa ser reiniciado periodicamente [RESOLVIDO] (7)









