Manipular um arquivo txt como se fosse uma planilha de calculo

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

[ Hits: 8.920 ]

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: [email protected]
# 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

Configurar 3G

Pequeno gerador de relatório da rede (CSV)

Criação de atalhos no Desktop (Unity)

RWm4aMp3 - converter arquivos de música m4a para mp3

Backup MySQL Incremental via RSYNC/FTP


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts