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.
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"
| 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 |
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.
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.