Validar CPFs manualmente em dezenas de arquivos de log é uma tarefa tediosa e propensa a erros. Este método utiliza um script bash eficiente que automatiza o processo, garantindo precisão e economia de tempo.
Primeiro, crie um arquivo chamado valida_cpf.sh com o seguinte conteúdo:
#!/bin/bash
# Função para validar CPF
validar_cpf() {
local cpf=$1
cpf=$(echo "$cpf" | tr -d '[:punct:]' | tr -d '[:space:]')
# Verifica se tem 11 dígitos
if [[ ${#cpf} -ne 11 || "$cpf" =~ [^0-9] ]]; then
return 1
fi
# Verifica se todos os dígitos são iguais
if [[ "$cpf" =~ ^(.)\1+$ ]]; then
return 1
fi
# Calcula o primeiro dígito verificador
local soma=0
for i in {10..2}; do
soma=$((soma + ${cpf:10-$i:1} * i))
done
local resto=$((soma % 11))
local dv1=$((resto < 2 ? 0 : 11 - resto))
# Calcula o segundo dígito verificador
soma=0
for i in {11..2}; do
soma=$((soma + ${cpf:11-$i:1} * i))
done
resto=$((soma % 11))
local dv2=$((resto < 2 ? 0 : 11 - resto))
# Compara com os dígitos verificadores do CPF
if [[ ${cpf:9:1} -eq $dv1 && ${cpf:10:1} -eq $dv2 ]]; then
return 0
else
return 1
fi
}
# Processa todos os arquivos .log no diretório atual
for arquivo in *.log; do
echo "Processando arquivo: $arquivo"
while IFS= read -r linha; do
# Extrai possíveis CPFs (padrão brasileiro)
while [[ "$linha" =~ [0-9]{3}\.[0-9]{3}\.[0-9]{3}-[0-9]{2} ]]; do
cpf="${BASH_REMATCH[0]}"
cpf_limpo=$(echo "$cpf" | tr -d '[:punct:]' | tr -d '[:space:]')
if validar_cpf "$cpf_limpo"; then
echo "CPF VÁLIDO: $cpf (Arquivo: $arquivo)"
else
echo "CPF INVÁLIDO: $cpf (Arquivo: $arquivo)"
fi
# Remove o CPF encontrado da linha
linha=${linha#*"$cpf"}
done
done < "$arquivo"
done
Dê permissão de execução ao script:
chmod +x valida_cpf.sh
Coloque o script no diretório onde estão os arquivos .log e execute:
./valida_cpf.sh
| Conteúdo do arquivo .log | Saída do script |
|---|---|
| CPF: 123.456.789-09 CPF: 111.111.111-11 CPF: 925.152.410-70 |
CPF INVÁLIDO: 123.456.789-09 (Arquivo: arquivo1.log) CPF INVÁLIDO: 111.111.111-11 (Arquivo: arquivo1.log) CPF VÁLIDO: 925.152.410-70 (Arquivo: arquivo1.log) |
Para salvar a saída em um arquivo de log:
./valida_cpf.sh > resultados_validacao.log
Com este script bash, você automatiza completamente a validação de CPFs em múltiplos arquivos .log, eliminando erros manuais e processando grandes volumes de dados em segundos.