Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #UMA POSSÍVEL SOLUÇÃO PARA O TÓPICO :: CONTAR NÚMEROS DE CAMPOS DE UMA LINHA
- #DESCRIÇÃO DO PROBLEMA
- #Preciso "contar" o número de campos de uma linha de um arquivo no formato:
- #1996062519*20110530*08312100*1996062515*0,70*0,00*CHAMADA LOCAL*UTILIZAÇÃO ACIMA DO CONTRATADO
- #1996062519*20110602*09402000*1996062528*7,80*0,00*CHAMADA LOCAL*UTILIZAÇÃO ACIMA DO CONTRATADO
- #1996062519*20110602*10291200*1996062510*16,50*0,00*CHAMADA LOCAL*UTILIZAÇÃO ACIMA DO CONTRATADO
- #1996062519*20110515*18024600*1996062511*1,00*0,21*TORPEDO VIVO FLEXIVE*UTILIZAÇÃO ACIMA DO CONTRATADO
- #1996062519*20110507*10470400**1,00*2,21*SINCRONISMO INICIAL*UTILIZAÇÃO ACIMA DO CONTRATADO
- #1996062519*20110523*11443600**1,00*0,36*ATUALIZACAO AGENDA*UTILIZAÇÃO ACIMA DO CONTRATADO
- #
- #o arquivo "tem" que conter 8 campos por linha. Preciso que o numero de
- #campos seja retornado para que quando a linha contiver, no caso, menos
- #que 8 campos ele execute determinada ação(incluir um campo em branco
- #após o terceiro campo). Os campos são separados por *.
- #
- #A POSSÍVEL SOLUÇÃO
- arquivo="$HOME/teste.texto"
- cat - >> "$arquivo" <<EOF
- 1996062519*20110530*08312100*1996062515*0,70*0,00*CHAMADA LOCAL*UTILIZAÇÃO ACIMA DO CONTRATADO
- 1996062519*20110602*09402000*1996062528*7,80*0,00*CHAMADA LOCAL*UTILIZAÇÃO ACIMA DO CONTRATADO
- 1996062519*20110602*10291200*1996062510*16,50*0,00*CHAMADA LOCAL*UTILIZAÇÃO ACIMA DO CONTRATADO
- 1996062519*20110515*18024600*1996062511*1,00*0,21*TORPEDO VIVO FLEXIVE*UTILIZAÇÃO ACIMA DO CONTRATADO
- 1996062519*20110523*11443600*1,00*0,36*LINHA TESTE*LINHA TESTE
- 1996062519*20110507*10470400**1,00*2,21*SINCRONISMO INICIAL*UTILIZAÇÃO ACIMA DO CONTRATADO
- 1996062519*20110523*11443600**1,00*0,36*ATUALIZACAO AGENDA*UTILIZAÇÃO ACIMA DO CONTRATADO
- 1996062519*20110515*18024600*1996062511*1,00*0,21*TORPEDO VIVO FLEXIVE*UTILIZAÇÃO ACIMA DO CONTRATADO
- 1996062519*20110523*11443600*1,00*0,36*LINHA TESTE2*LINHA TESTE2
- 1996062519*20110530*08312100*1996062515*0,70*0,00*CHAMADA LOCAL*UTILIZAÇÃO ACIMA DO CONTRATADO
- 1996062519*20110602*09402000*1996062528*7,80*0,00*CHAMADA LOCAL*UTILIZAÇÃO ACIMA DO CONTRATADO
- 1996062519*20110602*10291200*1996062510*16,50*0,00*CHAMADA LOCAL*UTILIZAÇÃO ACIMA DO CONTRATADO
- 1996062519*20110523*11443600*1,00*0,36*LINHA TESTE3*LINHA TESTE3
- EOF
- cat "$arquivo" | while read l
- do
- aux=`echo $l | egrep -v '^[0-9]{10}\*[0-9]{8}\*[0-9]{8}\*([0-9]{10}|\*)' | sed 's/\(.\{29\}\)/\1\*/'`
- echo $l
- echo $aux
- echo ...
- if ["$aux" -eq ""]
- then
- echo $l>> "$arquivo".result
- else
- echo $aux>> "$arquivo".result
- fi
- done
- exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement