seabeck.pages.dev

Como criar um script bash para validar CPFs em múltiplos arquivos .log?

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.

Pré-requisitos

Passo 1: Criar o script de validação

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

Passo 2: Tornar o script executável

Dê permissão de execução ao script:

chmod +x valida_cpf.sh

Passo 3: Executar o script

Coloque o script no diretório onde estão os arquivos .log e execute:

./valida_cpf.sh

Exemplo Prático

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)

Passo 4: Salvar resultados em arquivo (opcional)

Para salvar a saída em um arquivo de log:

./valida_cpf.sh > resultados_validacao.log

Conclusão

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.