Automação de Texto 🤖
Pipelines de Processamento
🔄 Fluxos Básicos
# Pipeline de transformação
cat input.txt | \
grep -v '^#' | \
sort -u | \
sed 's/old/new/g' > output.txt
# Processamento paralelo
parallel --pipe grep 'pattern' < huge_file.txt
# Transformação em lote
find . -type f -name "*.txt" | \
xargs -I {} sh -c 'process_file "{}"'
🎯 Transformações Complexas
# Multi-estágio
process_data() {
local input="$1"
cat "$input" | \
pre_process | \
main_transform | \
post_process | \
format_output
}
# Validação integrada
transform_with_validation() {
local input="$1"
local temp=$(mktemp)
if ! validate_input "$input"; then
return 1
fi
transform_data "$input" > "$temp" && \
validate_output "$temp" && \
mv "$temp" "$input.processed"
}
Ferramentas de Automação
🛠️ Scripts Utilitários
#!/bin/bash
# batch_processor.sh
process_directory() {
local dir="$1"
local pattern="$2"
local processor="$3"
find "$dir" -type f -name "$pattern" | \
while read -r file; do
echo "Processando: $file"
$processor "$file"
done
}
# Uso:
# ./batch_processor.sh ./data "*.txt" ./transform.sh
📊 Monitoramento
# Monitor de mudanças
watch_and_process() {
local dir="$1"
local processor="$2"
inotifywait -m "$dir" -e create -e modify |
while read -r directory events filename; do
echo "Mudança detectada: $filename"
$processor "$directory/$filename"
done
}
Casos de Uso
📝 Processamento de Logs
#!/bin/bash
# log_processor.sh
process_logs() {
# Extração
grep -E '^ERROR|^WARN' | \
# Transformação
sed -E 's/\[(.*)\]/\1/' | \
# Agregação
awk '{
count[$1]++
} END {
for (type in count)
print type, count[type]
}'
}
# Rotação e arquivamento
rotate_logs() {
local log="$1"
local max_size=$((10*1024*1024)) # 10MB
if [ $(stat -f%z "$log") -gt $max_size ]; then
mv "$log" "$log.$(date +%Y%m%d)"
gzip "$log.$(date +%Y%m%d)"
fi
}
📈 Relatórios Automatizados
#!/bin/bash
# report_generator.sh
generate_report() {
local data="$1"
local output="$2"
{
echo "# Relatório Automático"
echo "Data: $(date)"
echo
echo "## Estatísticas"
analyze_data "$data"
echo
echo "## Gráficos"
generate_graphs "$data"
} > "$output"
}
# Agendamento
# 0 6 * * * /path/to/report_generator.sh
Melhores Práticas
✅ Recomendações
Use controle de versão
Implemente logging
Valide entrada/saída
Trate erros adequadamente
Documente transformações
⚠️ Armadilhas Comuns
Race conditions
Memória insuficiente
Deadlocks
Arquivos temporários órfãos
Processamento incompleto
Otimização
⚡ Performance
# Processamento em lote
split -l 1000 input.txt temp_
for f in temp_*; do
process_chunk "$f" &
done
wait
cat temp_* > output.txt
rm temp_*
# Cache de resultados
declare -A cache
process_with_cache() {
local key="$1"
if [ -z "${cache[$key]}" ]; then
cache[$key]=$(expensive_operation "$key")
fi
echo "${cache[$key]}"
}
🔍 Debugging
# Debug mode
set -x # Ativa trace
trap 'echo "Erro na linha $LINENO"' ERR
# Logging avançado
log() {
local level="$1"
shift
echo "$(date '+%Y-%m-%d %H:%M:%S') [$level] $*" >&2
}
Exercícios Práticos
🎯 Desafio 1: Processador de CSV
Crie um script que:
Valide estrutura CSV
Transforme dados
Gere relatório
Archive resultados
🎯 Desafio 2: Monitor de Sistema
Desenvolva um sistema que:
Monitore recursos
Processe logs em tempo real
Gere alertas
Mantenha histórico
Próximos Passos
Shell Scripting
AUTOMATION MASTER
[🤖🤖🤖🤖🤖] 100%
STATUS: FLUXO AUTOMATIZADO
PRÓXIMO: SHELL SCRIPTING
14 abril 2025