seabeck.pages.dev

Como criar um script bash para limpar e validar lista de CPFs?

Limpar e validar uma lista de CPFs manualmente é uma tarefa trabalhosa e propensa a erros. Com um script bash, você automatiza todo o processo, garantindo precisão e rapidez na verificação dos dígitos verificadores.

Pré-requisitos

Criando o script de validação de CPFs

O script abaixo lê um arquivo de entrada, limpa os dados removendo caracteres inválidos, normaliza o formato e valida cada CPF usando o algoritmo oficial dos dígitos verificadores.

#!/bin/bash

# Função para calcular o primeiro dígito verificador
calc_digito1() {
    local cpf=$1
    local soma=0
    for i in {10..2}; do
        soma=$((soma + ${cpf:10-$i:1} * i))
    done
    local resto=$((soma % 11))
    echo $((resto < 2 ? 0 : 11 - resto))
}

# Função para calcular o segundo dígito verificador
calc_digito2() {
    local cpf=$1
    local soma=0
    for i in {11..2}; do
        soma=$((soma + ${cpf:11-$i:1} * i))
    done
    local resto=$((soma % 11))
    echo $((resto < 2 ? 0 : 11 - resto))
}

# Função para validar um CPF
validar_cpf() {
    local cpf=$1
    # Remover caracteres não numéricos
    cpf=$(echo "$cpf" | tr -dc '0-9')
    
    # Verificar se tem 11 dígitos
    if [ ${#cpf} -ne 11 ]; then
        return 1
    fi
    
    # Verificar se todos os dígitos são iguais
    if echo "$cpf" | grep -q "^\(.\)\1\{10\}$"; then
        return 1
    fi
    
    # Calcular dígitos verificadores
    local d1=$(calc_digito1 "$cpf")
    local d2=$(calc_digito2 "$cpf")
    
    # Comparar com os dígitos originais
    if [ $d1 -eq ${cpf:9:1} ] && [ $d2 -eq ${cpf:10:1} ]; then
        echo "$cpf"
        return 0
    else
        return 1
    fi
}

# Processar arquivo de entrada
input_file="$1"
output_file="cpfs_validos.txt"

while IFS= read -r line; do
    if validar_cpf "$line"; then
        echo "$line" >> "$output_file"
    fi
done < "$input_file"

echo "Validação concluída. CPFs válidos salvos em: $output_file"

Exemplo Prático

CPF de Entrada Após Limpeza Válido?
123.456.789-09 12345678909 Não
529.982.247-25 52998224725 Sim
111.111.111-11 11111111111 Não
789.541.630-23 78954163023 Sim

Como usar o script

Salve o código em um arquivo chamado validar_cpfs.sh, dê permissão de execução com chmod +x validar_cpfs.sh e execute passando o arquivo de entrada como parâmetro: ./validar_cpfs.sh cpfs.txt. O script criará um arquivo cpfs_validos.txt com apenas os CPFs válidos.

Conclusão

Com este script bash, você transforma uma tarefa manual demorada em um processo automatizado que roda em segundos, eliminando erros humanos e garantindo que apenas CPFs válidos sejam processados no seu sistema.