|
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.
[Prev in Thread] | Current Thread | [Next in Thread] |