Referência de Sintaxe dasel v3
Ferramenta CLI de binário único para consultar, modificar e converter dados estruturados. Substitui jq + yq + xmllint com uma sintaxe de consulta unificada em todos os formatos.
Versão estável na data da escrita (data: 2026-02-23): v3.2.3
Formatos Suportados
json, yaml, toml, xml, csv, hcl, ini
Uso Básico
# Consultar a partir de stdin (formato obrigatório)
echo '{"foo": "bar"}' | dasel -i json 'foo'
# Consultar arquivo via stdin
cat config.yaml | dasel -i yaml 'database.host'
# Modificar e exibir documento completo
echo '{"port": 3000}' | dasel -i json --root 'server.port = 8080'
# Converter formatos
cat data.json | dasel -i json -o yaml
Tratamento de Formato
dasel v3 NÃO detecta automaticamente o formato a partir da extensão do arquivo. Não há flag -f/--file. A entrada é sempre lida de stdin. O formato deve ser especificado explicitamente com -i e/ou -o. Se apenas um for fornecido, o outro assume o mesmo valor. Se nenhum for fornecido, ambos assumem json (configurável via ~/dasel.yaml com a chave default_format).
Fonte: internal/cli/query.go:10-11, internal/cli/run.go:37-43, internal/cli/config.go:19-21
Flags Principais
-i, --in <formato> Analisador de entrada (json, yaml, toml, xml, csv, hcl, ini)
-o, --out <formato> Analisador de saída (padrão: formato de entrada)
--root Exibir documento completo após modificação
--var <nome>=<valor> Passar variáveis para a consulta (repetível)
--compact Saída compacta (sem formatação bonita)
--rw-flag <nome>=<valor> Flag de leitura/escrita (ex.: --rw-flag csv-delimiter=;)
--read-flag <nome>=<valor> Flag de leitura (ex.: --read-flag xml-mode=structured)
--write-flag <nome>=<valor> Flag de escrita (ex.: --write-flag csv-delimiter=;)
-c, --config <caminho> Caminho do arquivo de configuração (padrão: ~/dasel.yaml)
Referência Rápida de Seletores
| Seletor | Sintaxe | Exemplo |
|---|---|---|
| Notação de ponto | foo.bar.baz | cat f.json | dasel -i json 'foo.bar' |
| Índice de array | [0], [2] | cat f.json | dasel -i json 'items[0]' |
| Fatia de array | [0:3] | cat f.json | dasel -i json 'items[0:2]' |
| Descida recursiva | .., ..nome | cat f.json | dasel -i json '..nome' |
| Todos os valores recursivos | ..* | cat f.json | dasel -i json '..*' |
| Construção de objeto | { chave1, chave2 } | cat f.json | dasel -i json '{ nome, idade }' |
| Spread | obj... | cat f.json | dasel -i json '{ padroes..., substituicoes... }' |
Referência Rápida de Funções
19 funções incorporadas em DefaultFuncCollection (fonte: execution/func.go:12-33) além da expressão complexa sortBy.
| Função | Propósito | Exemplo |
|---|---|---|
filter(pred) | Filtrar arrays | users.filter(ativo == true) |
map(expr) | Transformar arrays | users.map(nome) |
each(expr) | Modificar cada elemento | each($this = $this * 2) |
search(pred) | Busca recursiva | search(has("id")) |
sortBy(expr) | Ordenar array | sortBy($this, desc) |
has(chave) | Verificar se chave existe | has("nome") |
get(chave) | Obter valor na chave/índice | get("nome") |
contains(valor) | Verificar se fatia contém valor | contains(42) |
len(expr) | Comprimento | len($this) |
join(sep) | Juntar em string | join(",") |
sum(expr) | Somar array numérico | sum($this) |
add(args...) | Somar números | add(1, 2, 3) |
max(args...) | Valor máximo | max(1, 5, 3) |
min(args...) | Valor mínimo | min(1, 5, 3) |
merge(args...) | Mesclar mapas | merge(padroes, substituicoes) |
keys(expr) | Obter chaves de mapa | keys($this) |
reverse(expr) | Reverter array | reverse($this) |
typeOf(expr) | Obter string do tipo | typeOf($this) |
toString(expr) | Converter para string | toString($this) |
toInt(expr) | Converter para inteiro | toInt($this) |
toFloat(expr) | Converter para float | toFloat($this) |
base64e(str) | Codificar em base64 | base64e("olá") |
base64d(str) | Decodificar base64 | base64d("b2zDoQ==") |
parse(fmt, dados) | Analisar dados em tempo de execução | parse("json", rawStr) |
readFile(caminho) | Ler conteúdo de arquivo | readFile("config.json") |
ignore() | Excluir do ramo | ignore() |
Sintaxe de Modificação
dasel v3 removeu os subcomandos put e delete. Use atribuição com --root:
# Definir um valor
echo '{"contador": 1}' | dasel -i json --root 'contador = 42'
# Atribuição booleana
echo '{"ativado": false}' | dasel -i json --root 'ativado = true'
# Anexar ao array
echo '[1,2,3]' | dasel -i json --root '[$this..., 4]'
# Remover chave (reconstruir sem ela)
echo '{"manter": "sim", "remover": "não"}' | dasel -i json --root '{ manter }'
Conversão de Formatos
# JSON para YAML
cat data.json | dasel -i json -o yaml
# YAML para TOML
cat config.yaml | dasel -i yaml -o toml
# TOML para JSON
cat config.toml | dasel -i toml -o json
Variáveis Especiais
$root-- referencia o documento raiz$this-- referencia o nó atual (dentro deeach,map,filter,search)
Atribuição de Variáveis
# Multi-instruções com ponto e vírgula
cat data.json | dasel -i json '$ativos = users.filter(ativo == true); $ativos.map(nome)'
Condicionais
echo '{"contador": 7}' | dasel -i json 'if(contador > 5) { "muitos" } else { "poucos" }'
Mudanças da v3 em Relação à v2
- Subcomandos
putedeleteremovidos; use atribuição inline com--root - Flag
-f/--fileremovida; entrada sempre vem de stdin via pipe - Sintaxe de consulta/seletor completamente reformulada; sintaxe v2 NÃO é compatível com v3
- Framework CLI mudou de Cobra para Kong
- Caminho do módulo Go mudou para
github.com/tomwright/dasel/v3
Referências Detalhadas
- Seletores e Sintaxe -- notação de ponto, arrays, descida recursiva, construção de objetos, variáveis, condicionais, operadores de comparação
- Referência de Funções -- assinaturas completas, descrições e exemplos
- Padrões Específicos por Formato -- padrões e observações de conversão para JSON, YAML, TOML, XML, CSV, HCL, INI
Fontes
- README do dasel: https://raw.githubusercontent.com/TomWright/dasel/master/README.md (obtido em 2026-02-19)
- Documentação do dasel: https://daseldocs.tomwright.me (obtido em 2026-02-19)
- Sintaxe de consulta: https://daseldocs.tomwright.me/syntax/query-syntax.md (obtido em 2026-02-19)
- Índice de funções: https://daseldocs.tomwright.me/functions (obtido em 2026-02-19)
- CHANGELOG: https://raw.githubusercontent.com/TomWright/dasel/master/CHANGELOG.md (obtido em 2026-02-19)
- Releases: https://github.com/TomWright/dasel/releases (obtido em 2026-02-19)
- Análise do código-fonte:
execution/func.go,internal/cli/query.go,internal/cli/run.go,internal/cli/config.go,execution/execute_binary.go,execution/execute_unary.go(analisado em 2026-02-19) - Verificação de fatos: FACT_CHECK_REPORT.md (2026-02-23)