Enviado em 02/12/2020 - 16:58h
Bom dia!
Criei um Shellscript para ler um arquivo posicional, pegar uma determinada posição e baseada nessa posição jogar a linha inteira para outro arquivo.
Segue um exemplo:
INPUT FILE
003402841000011A10CNPJ08963394000195
003402841000041B20CNPJ08963394000195 16012020XX5313720087903007
003402841000011A10CNPJ08963394000195
003402841000041B20CNPJ08963394000195 16012020XX5313720087903007
OUTPUT FILE A
003402841000011A10CNPJ08963394000195
003402841000011A10CNPJ08963394000195
OUTPUT FILE B
003402841000041B20CNPJ08963394000195 16012020XX5313720087903007
003402841000041B20CNPJ08963394000195 16012020XX5313720087903007
Tenho o seguinte codigo:
O codigo acima faz o que eu quero, porém demora demais, o arquivo que estou lendo tem em torno de 400k de registros.
Gostaria de saber se consigo melhorar o meu codigo ou algum outro que me ajude.
Obrigado!
Criei um Shellscript para ler um arquivo posicional, pegar uma determinada posição e baseada nessa posição jogar a linha inteira para outro arquivo.
Segue um exemplo:
INPUT FILE
003402841000011A10CNPJ08963394000195
003402841000041B20CNPJ08963394000195 16012020XX5313720087903007
003402841000011A10CNPJ08963394000195
003402841000041B20CNPJ08963394000195 16012020XX5313720087903007
OUTPUT FILE A
003402841000011A10CNPJ08963394000195
003402841000011A10CNPJ08963394000195
OUTPUT FILE B
003402841000041B20CNPJ08963394000195 16012020XX5313720087903007
003402841000041B20CNPJ08963394000195 16012020XX5313720087903007
Tenho o seguinte codigo:
#!/usr/bin/env bash
ARQ_IN="$1";
DIR_OUT="C:/Users/etc/etc/'";
while IFS= read -r line || [[ -n "$line" ]];
do
SUBSTRING=$(echo $line| cut -c16);
if [ $SUBSTRING == "A" ]
then
echo "$line" >> "$DIR_OUT"arqA.txt;
else
if [ $SUBSTRING == "B" ]
then
echo "$line" >> "$DIR_OUT"arqB.txt;
else
if [ $SUBSTRING == "K" ]
then
echo "$line" >> "$DIR_OUT"arqK.txt;
else
if [ $SUBSTRING == "1" ]
then
echo "$line" >> "$DIR_OUT"arq1.txt;
else
fi
fi
fi
fi
done < "$ARQ_IN"
O codigo acima faz o que eu quero, porém demora demais, o arquivo que estou lendo tem em torno de 400k de registros.
Gostaria de saber se consigo melhorar o meu codigo ou algum outro que me ajude.
Obrigado!