Manipular um arquivo txt como se fosse uma planilha de calculo

Publicado por Rodney Wellington C. Barreto 19/10/2004

[ Hits: 9.312 ]

Homepage: http://rodneybr.t35.com

Download listacheque




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!

  



Esconder código-fonte

#!/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

Scripts recomendados

SDVDMux

Instalar impressora no CUPS a partir de um arquivo PPD

sysinfo

sysaudit

Redimensionador automático de imagens


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts