Advertisement
darsinqauros

Resposta para "Contar número de campos de uma linha"

Oct 3rd, 2011
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.38 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. #UMA POSSÍVEL SOLUÇÃO PARA O TÓPICO :: CONTAR NÚMEROS DE CAMPOS DE UMA LINHA
  4.  
  5. #DESCRIÇÃO DO PROBLEMA
  6. #Preciso "contar" o número de campos de uma linha de um arquivo no formato:
  7. #1996062519*20110530*08312100*1996062515*0,70*0,00*CHAMADA LOCAL*UTILIZAÇÃO ACIMA DO CONTRATADO
  8. #1996062519*20110602*09402000*1996062528*7,80*0,00*CHAMADA LOCAL*UTILIZAÇÃO ACIMA DO CONTRATADO
  9. #1996062519*20110602*10291200*1996062510*16,50*0,00*CHAMADA LOCAL*UTILIZAÇÃO ACIMA DO CONTRATADO
  10. #1996062519*20110515*18024600*1996062511*1,00*0,21*TORPEDO VIVO FLEXIVE*UTILIZAÇÃO ACIMA DO CONTRATADO
  11. #1996062519*20110507*10470400**1,00*2,21*SINCRONISMO INICIAL*UTILIZAÇÃO ACIMA DO CONTRATADO
  12. #1996062519*20110523*11443600**1,00*0,36*ATUALIZACAO AGENDA*UTILIZAÇÃO ACIMA DO CONTRATADO
  13. #
  14. #o arquivo "tem" que conter 8 campos por linha. Preciso que o numero de
  15. #campos seja retornado para que quando a linha contiver, no caso, menos
  16. #que 8 campos ele execute determinada ação(incluir um campo em branco
  17. #após o terceiro campo). Os campos são separados por *.
  18. #
  19. #A POSSÍVEL SOLUÇÃO
  20.  
  21. arquivo="$HOME/teste.texto"
  22.  
  23. cat - >> "$arquivo" <<EOF
  24. 1996062519*20110530*08312100*1996062515*0,70*0,00*CHAMADA LOCAL*UTILIZAÇÃO ACIMA DO CONTRATADO
  25. 1996062519*20110602*09402000*1996062528*7,80*0,00*CHAMADA LOCAL*UTILIZAÇÃO ACIMA DO CONTRATADO
  26. 1996062519*20110602*10291200*1996062510*16,50*0,00*CHAMADA LOCAL*UTILIZAÇÃO ACIMA DO CONTRATADO
  27. 1996062519*20110515*18024600*1996062511*1,00*0,21*TORPEDO VIVO FLEXIVE*UTILIZAÇÃO ACIMA DO CONTRATADO
  28. 1996062519*20110523*11443600*1,00*0,36*LINHA TESTE*LINHA TESTE
  29. 1996062519*20110507*10470400**1,00*2,21*SINCRONISMO INICIAL*UTILIZAÇÃO ACIMA DO CONTRATADO
  30. 1996062519*20110523*11443600**1,00*0,36*ATUALIZACAO AGENDA*UTILIZAÇÃO ACIMA DO CONTRATADO
  31. 1996062519*20110515*18024600*1996062511*1,00*0,21*TORPEDO VIVO FLEXIVE*UTILIZAÇÃO ACIMA DO CONTRATADO
  32. 1996062519*20110523*11443600*1,00*0,36*LINHA TESTE2*LINHA TESTE2
  33. 1996062519*20110530*08312100*1996062515*0,70*0,00*CHAMADA LOCAL*UTILIZAÇÃO ACIMA DO CONTRATADO
  34. 1996062519*20110602*09402000*1996062528*7,80*0,00*CHAMADA LOCAL*UTILIZAÇÃO ACIMA DO CONTRATADO
  35. 1996062519*20110602*10291200*1996062510*16,50*0,00*CHAMADA LOCAL*UTILIZAÇÃO ACIMA DO CONTRATADO
  36. 1996062519*20110523*11443600*1,00*0,36*LINHA TESTE3*LINHA TESTE3
  37. EOF
  38.  
  39. sed -e '/^\([0-9]*\*\)\{4\}/d' -e 's/\(\([0-9]*\*\)\{3\}\)/\1\*/' $arquivo
  40.  
  41. exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement