Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Preciso de ajuda com o "cat log_stats.txt"

Olá pessoal, alguém pode me ajudar.
Quando corro o cat log_stats.txt, ele puxa informações duplicadas.
Já dei uma pesquisada, mas não consigo identificar o erro ou o que fazer.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

3 respostas

Oi tudo bem?
Preciso do script para analizar onde está o erro.
E o comando cat apenas lê o arquivo e não insere informações.
O erro está no script que gera estas informações.
Confere ai e me envie o script que gera o arquivo log_stats.txt .

Ronaldo, é o mesmo da aula.
Segue abaixo!


LOG_DIR="../myapp/logs"
ARQUIVO_DIR="../myapp/logs-processados"

mkdir -p $ARQUIVO_DIR

echo "Verificando os logs no diretorio $LOG_DIR"

find $LOG_DIR -name "*.log" -print0 | while IFS= read -r -d '' arquivo; do
        grep "ERROR" $arquivo > "${arquivo}.filtrado"
        grep "SENSITIVE_DATA" $arquivo >> "${arquivo}.filtrado"

        sed -i 's/User password is .*/User password is REDACTED/g' "${arquivo}.filtrado"
        sed -i 's/User password reset request with token .*/User password reset request with token REDACTED/g' "${arquivo}.filtrado"
        sed -i 's/API key leaked: .*/API key leaked: REDACTED/g' "${arquivo}.filtrado"
        sed -i 's/User credit card last four digits: .*/User credit card last four digits: REDACTED/g' "${arquivo}.filtrado"
        sed -i 's/User session initiated with token: .*/User session initiated with token: REDACTED/g' "${arquivo}.filtrado"

        sort "${arquivo}.filtrado" -o "${arquivo}.filtrado"

        uniq "${arquivo}.filtrado" > "${arquivo}.unico"

        num_palavras=$(wc -w < "${arquivo}.unico")
        num_linhas=$(wc -l < "${arquivo}.unico")

        nome_arquivo=$(basename "${arquivo}.unico")

        echo "Arquivo: $nome_arquivo" >> "${ARQUIVO_DIR}/log_stats_$(date +%F).txt"
        echo "Número de linhas: $num_linhas" >> "${ARQUIVO_DIR}/log_stats_$(date +%F).txt"
        echo "Número de palavras: $num_palavras" >> "${ARQUIVO_DIR}/log_stats_$(date +%F).txt"
        echo "--------------------------" >> "${ARQUIVO_DIR}/log_stats_$(date +%F).txt"

        if [[ "$nome_arquivo" == *frontend* ]]; then
                sed 's/^/[FRONTEND] /' "${arquivo}.unico" >> "${ARQUIVO_DIR}/logs_combinados_$(date +%F).log"
        elif [[ "$nome_arquivo" == *backend* ]]; then
                sed 's/^/[BACKEND] /' "${arquivo}.unico" >> "${ARQUIVO_DIR}/logs_combinados_$(date +%F).log"
        else
                cat "${arquivo}.unico" >> "${ARQUIVO_DIR}/logs_combinados_$(date +%F).log"
        fi
done

sort -k2 "${ARQUIVO_DIR}/logs_combinados_$(date +%F).log" -o "${ARQUIVO_DIR}/logs_combinados_$(date +%F).log"
solução!

Acessa o diretório com o arquivo log_stats.txt e exclui ele.
Rode o script novamente e confere se o erro continua.
Me avise o resultado.
Cada vez que voce roda o script ele adiciona as informaçoes e como sua base de informações é estatico vai repetir as informações.
Não há nada de errado com o arquivo.
No caso toda vez que voce roda o script ele adiciona as informações dos arquivos de forma cumulativa.
E como essas informações não mudam o arquivo fica com informações repetidas.
Espero que tenha lhe ajudado.
Bons estudos.
Para ver modificações no arquivo voce pode inserir um arquivo de log do seu sistema para monitorar.
Bons estudos.
Qualquer duvida ou se dei alguma informação errada me avise.