shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[shell-script] Obter quantidade de coluna no while.


From: dicipolo_rafael
Subject: [shell-script] Obter quantidade de coluna no while.
Date: 26 Jul 2016 05:59:38 -0700

Pessoal, bom dia,


Estou com um problema de desempenho e queria melhorar o script. Atualmente faço um while no arquivo lendo linha por linha e uso o AWK para separar os campos e faço uma série de validações e talz. Segue um trecho do cód.


while read line; do

                                CAMPO1=`echo $line |awk -F"|" '{print $1}'`

                                CAMPO2=`echo $line |awk -F"|" '{print $2}'`

                                CAMPO3=`echo $line |awk -F"|" '{print $3}'`

NCOLUNA=`echo $line |awk -F"|" '{print NF }'`

                                {BLOCO DE IF's} 

elif [ "$NCOLUNA" -ne "8" ]; then

done < arquivo


nesse formato um arquivo de 20k de linhas to levando em média 6 min para processar e gerar o arquivo de saída. Estou mudando para usar o while já o IFS. ficando assim.


while IFS='|' read CAMPO1 CAMPO3 CAMPO3; do

{BLOCO DE IF's}

done < arquivo


Neste mesmo formato o processo de 20k de linhas cai de 6 min para 4 segundos. porém meu grande é que nesses IF de validação eu preciso validar se o número de campos esta correto pois uso como delimitador o "|" e como são humanos que preenche o arquivo que eu processo por mais que eu vale para não usar esse caracter tem vezes que alguém acaba utilizando e quebra o mapeamento das colunas. Alguém consegue me dar uma luz de como conseguir validar o número de colunas da linha no segundo while?


Agradeço deste já.


Abs.







reply via email to

[Prev in Thread] Current Thread [Next in Thread]