Pipes & Processamento de Texto
Componha ferramentas de CLI para analisar saída de build, logs JSON, CSVs de benchmark e estatísticas git sem abrir uma planilha.
Receita
cargo test 2>&1 | tee test.log
rg "FAILED" test.log | wc -l
cargo tree -e no-dev | sort | uniq -c | sort -rn | headQuando usar isso:
- Resumindo falhas de teste do download de CI
- Encontrando dependências duplicadas em
cargo tree - Filtragem rápida de logs durante incidentes
Exemplo de Trabalho
# Testes mais lentos da saída do nextest (padrão de exemplo)
cargo nextest run 2>&1 | rg "PASS|FAIL" | sort | uniq -c
# Linhas de log JSON (inscrito de tracing JSON)
rg '"level":"ERROR"' /var/log/my-service.log | jq -r '.message'
# Top 10 maiores arquivos em src
fd . src -t f | xargs wc -l | sort -n | tail -10
# Autores por contagem de commits no último mês
git log --since="1 month ago" --format='%an' | sort | uniq -c | sort -rn | headO que isso demonstra:
teepreserva a saída enquanto salva o arquivojqanalisa logs estruturados de Rust- Padrões padrão Unix de sort/uniq
Mergulho Profundo
Padrões de Pipeline
# Extrair nomes de crates de avisos do clippy
cargo clippy 2>&1 | rg 'warning:.*\((.*)\)' -r '$1' | sort -u
# Filtrar CSV de benchmark
awk -F, '$3 > 100 {print $1,$3}' bench.csvEspecífico de Rust
Use cargo metadata --format-version=1 | jq para criar scripts de grafos de workspace.
Armadilhas
- Erros de pipe quebrado - benignos quando
headfecha cedo. Correção: ignorar ou| head || true. - Espaços em branco em nomes de arquivos -
xargsdivide incorretamente. Correção:fd -0 | xargs -0. - jq em linhas não-JSON - falhas. Correção: filtrar com
rgprimeiro. - Surpresas na ordenação de locale - ordenação estranha. Correção:
LC_ALL=C sort. - Arquivos de log enormes na memória - sobrecarga de
cat. Correção: transmitir comrgouless.
Alternativas
| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
| Polars CLI / Python | Análises pesadas | Contagens de uma linha |
| ClickHouse / Loki | Armazenamento de logs de produção | Visualização rápida local |
| Script Rust personalizado | Pipeline repetido | Investigação única |
FAQs
jq não instalado?
Use rg com regex ou instale via gerenciador de pacotes no onboarding.
Analisar tempo do cargo?
-Z timings em nightly produz HTML; para stable use cargo build com ferramentas RUSTC_WRAPPER.
Relacionados
Versões da Stack: Esta página foi escrita para Rust 1.97.0 (edição 2024), Tokio 1.x, Axum 0.8, serde 1.0, sqlx 0.8, clap 4, e Polars 0.46+.