dasel v3 構文リファレンス
構造化データのクエリ、変更、変換を行う単一バイナリCLI。jq + yq + xmllint を置き換え、全フォーマットで統一されたクエリ構文を提供します。
本ドキュメント執筆時点の安定版(日付:2026-02-23):v3.2.3
サポートされているフォーマット
json、yaml、toml、xml、csv、hcl、ini
基本的な使い方
# stdinからクエリ(フォーマット指定必須)
echo '{"foo": "bar"}' | dasel -i json 'foo'
# ファイルからstdin経由でクエリ
cat config.yaml | dasel -i yaml 'database.host'
# 変更して全文書を出力
echo '{"port": 3000}' | dasel -i json --root 'server.port = 8080'
# フォーマット変換
cat data.json | dasel -i json -o yaml
フォーマットの取り扱い
dasel v3はファイル拡張子からのフォーマット自動検出を行いません。-f/--fileフラグはありません。入力は常にstdinから読み取られます。フォーマットは-iおよび/または-oで明示的に指定する必要があります。どちらか一方のみが指定された場合、もう一方はその値にデフォルト設定されます。どちらも指定されない場合、両方ともデフォルトでjsonになります(~/dasel.yamlのdefault_formatキーで設定可能)。
ソース:internal/cli/query.go:10-11、internal/cli/run.go:37-43、internal/cli/config.go:19-21
主要フラグ
-i、--in <フォーマット> 入力パーサー(json、yaml、toml、xml、csv、hcl、ini)
-o、--out <フォーマット> 出力パーサー(デフォルトは入力フォーマット)
--root 変更後の全文書を出力
--var <名前>=<値> 変数をクエリに渡す(繰り返し指定可能)
--compact コンパクト出力(整形なし)
--rw-flag <名前>=<値> 読み書きフラグ(例:--rw-flag csv-delimiter=;)
--read-flag <名前>=<値> リーダーフラグ(例:--read-flag xml-mode=structured)
--write-flag <名前>=<値> ライターフラグ(例:--write-flag csv-delimiter=;)
-c、--config <パス> 設定ファイルパス(デフォルト:~/dasel.yaml)
コアセレクター クイックリファレンス
| セレクター | 構文 | 例 |
|---|---|---|
| ドット記法 | foo.bar.baz | cat f.json | dasel -i json 'foo.bar' |
| 配列インデックス | [0]、[2] | cat f.json | dasel -i json 'items[0]' |
| 配列スライス | [0:3] | cat f.json | dasel -i json 'items[0:2]' |
| 再帰的降下 | ..、..name | cat f.json | dasel -i json '..name' |
| 全値再帰 | ..* | cat f.json | dasel -i json '..*' |
| オブジェクト構築 | { key1, key2 } | cat f.json | dasel -i json '{ name, age }' |
| スプレッド | obj... | cat f.json | dasel -i json '{ defaults..., overrides... }' |
主要関数 クイックリファレンス
DefaultFuncCollection内の19個の組み込み関数(ソース:execution/func.go:12-33)に加え、sortBy複合式。
| 関数 | 目的 | 例 |
|---|---|---|
filter(pred) | 配列のフィルタリング | users.filter(active == true) |
map(expr) | 配列の変換 | users.map(name) |
each(expr) | 各要素の変更 | each($this = $this * 2) |
search(pred) | 再帰検索 | search(has("id")) |
sortBy(expr) | 配列の並べ替え | sortBy($this, desc) |
has(key) | キーの存在確認 | has("name") |
get(key) | キー/インデックスでの値取得 | get("name") |
contains(val) | スライスが値を含むか確認 | contains(42) |
len(expr) | 長さ | len($this) |
join(sep) | 文字列に結合 | join(",") |
sum(expr) | 数値配列の合計 | sum($this) |
add(args...) | 数値の加算 | add(1, 2, 3) |
max(args...) | 最大値 | max(1, 5, 3) |
min(args...) | 最小値 | min(1, 5, 3) |
merge(args...) | マップのマージ | merge(defaults, overrides) |
keys(expr) | マップのキー取得 | keys($this) |
reverse(expr) | 配列の反転 | reverse($this) |
typeOf(expr) | 型文字列の取得 | typeOf($this) |
toString(expr) | 文字列にキャスト | toString($this) |
toInt(expr) | 整数にキャスト | toInt($this) |
toFloat(expr) | 浮動小数点数にキャスト | toFloat($this) |
base64e(str) | Base64エンコード | base64e("hello") |
base64d(str) | Base64デコード | base64d("aGVsbG8=") |
parse(fmt, data) | ランタイムでのデータ解析 | parse("json", rawStr) |
readFile(path) | ファイル内容の読み取り | readFile("config.json") |
ignore() | ブランチから除外 | ignore() |
変更構文
v3ではputとdeleteサブコマンドが削除されました。代入には--rootを使用します:
# 値の設定
echo '{"count": 1}' | dasel -i json --root 'count = 42'
# 真偽値の代入
echo '{"enabled": false}' | dasel -i json --root 'enabled = true'
# 配列への追加
echo '[1,2,3]' | dasel -i json --root '[$this..., 4]'
# キーの削除(再構築して除外)
echo '{"keep": "yes", "drop": "no"}' | dasel -i json --root '{ keep }'
フォーマット変換
# JSONからYAMLへ
cat data.json | dasel -i json -o yaml
# YAMLからTOMLへ
cat config.yaml | dasel -i yaml -o toml
# TOMLからJSONへ
cat config.toml | dasel -i toml -o json
特殊変数
$root— ルートドキュメントを参照$this— 現在のノードを参照(each、map、filter、search内で使用)
変数代入
# セミコロンを使った複数ステートメント
cat data.json | dasel -i json '$active = users.filter(active == true); $active.map(name)'
条件
echo '{"count": 7}' | dasel -i json 'if(count > 5) { "many" } else { "few" }'
v3のv2からの破壊的変更
putとdeleteサブコマンドが削除されました。インライン代入に--rootを使用してください-f/--fileフラグが削除されました。入力は常にパイプ経由でstdinから取得します- クエリ/セレクター構文が完全に刷新されました。v2の構文はv3と互換性がありません
- CLIフレームワークがCobraからKongに変更されました
- Goモジュールパスが
github.com/tomwright/dasel/v3に変更されました
詳細リファレンス
- セレクターと構文 — ドット記法、配列、再帰的降下、オブジェクト構築、変数、条件、比較演算子
- 関数リファレンス — 完全な関数シグネチャ、説明、例
- フォーマット固有パターン — JSON、YAML、TOML、XML、CSV、HCL、INIのパターンと変換上の注意点
ソース
- dasel README: https://raw.githubusercontent.com/TomWright/dasel/master/README.md(取得日:2026-02-19)
- dasel docs: https://daseldocs.tomwright.me(取得日:2026-02-19)
- クエリ構文: https://daseldocs.tomwright.me/syntax/query-syntax.md(取得日:2026-02-19)
- 関数インデックス: https://daseldocs.tomwright.me/functions(取得日:2026-02-19)
- CHANGELOG: https://raw.githubusercontent.com/TomWright/dasel/master/CHANGELOG.md(取得日:2026-02-19)
- リリース: https://github.com/TomWright/dasel/releases(取得日:2026-02-19)
- ソースコード解析:
execution/func.go、internal/cli/query.go、internal/cli/run.go、internal/cli/config.go、execution/execute_binary.go、execution/execute_unary.go(解析日:2026-02-19) - 事実確認: FACT_CHECK_REPORT.md(2026-02-23)