Dasel について
Dasel は構造化データを扱うコマンドラインツールで、コマンドは dasel です。-f でファイルを指定してセレクターで値を読み取り、put で型を指定した値を書き込めます。入出力はパイプラインに組み込みやすいです。
主な機能
- 01dasel -f config.yml ".server.port" で項目を読み取る
- 02dasel put と -t int で型を指定して値を書き込む
- 03YAML や JSON などの設定ファイルに対応
- 04パイプラインに向いた入出力
- 05繰り返し実行できるデータ処理
活用シーン
- 01スクリプト内で設定ファイルのポート番号を取得
- 02config.json の port を 3000 に変更
- 03コーディングエージェントが形式をまたいで設定を一貫して編集
インストール
OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。
インストール後にdasel --versionを実行して確認します。
コマンド例
よく使うコマンドを使う順に並べています。
詳細
Dasel
Dasel(Data-Selectの略)は、JSON、YAML、TOML、XML、CSV、KDL などのデータ構造をクエリ、変更、変換するためのコマンドラインツールおよびライブラリです。
一貫性のある強力な構文でデータをたどって更新できるため、開発者、DevOps、データ加工の作業に役立ちます。
機能
- マルチフォーマット対応:JSON、YAML、TOML、XML、CSV、HCL、INI、KDL。
- 統一されたクエリ構文:同じセレクターを使って、あらゆる形式のデータにアクセスできます。
- クエリと検索:直感的な構文で値、リスト、構造を抽出できます。
- インプレース変更:構造化ファイル内の値を直接更新、挿入、削除できます。
- フォーマット変換:JSON → YAML、TOML → JSON など、データをシームレスに変換できます。
- スクリプトに最適:シェルスクリプトやパイプラインに簡単に統合できます。
- ライブラリ対応:Go プロジェクトにインポートして使用できます。
インストール
Homebrew(macOS/Linux)
brew install dasel
Go でインストール
go install github.com/tomwright/dasel/v3/cmd/dasel@master
ビルド済みバイナリ
Linux、macOS、Windows 向けのビルド済みバイナリは、リリースページから入手できます。
上記の方法が使えない場合
その他の方法については、インストールのドキュメントをご覧ください。
シェル補完
Dasel は Bash、Zsh、Fish、PowerShell のタブ補完に対応しています。シェル用の補完スクリプトを生成して読み込みます。
# Bash
source <(dasel completion bash)
# Zsh
source <(dasel completion zsh)
# Fish
dasel completion fish | source
# PowerShell
dasel completion powershell | Out-String | Invoke-Expression
恒久的なインストール方法については、シェル補完のドキュメントをご覧ください。
Man ページ
man ページを生成して表示します。
dasel man | man -l -
基本的な使い方
値の選択
デフォルトでは、Dasel は最後のセレクターを評価し、結果を出力します。
echo '{"foo": {"bar": "baz"}}' | dasel -i json 'foo.bar'
# Output: "baz"
値の変更
値をインラインで更新します。
echo '{"foo": {"bar": "baz"}}' | dasel -i json 'foo.bar = "bong"'
# Output: "bong"
変更後にドキュメント全体を出力するには、--root を使用します。
echo '{"foo": {"bar": "baz"}}' | dasel -i json --root 'foo.bar = "bong"'
# Output:
{
"foo": {
"bar": "bong"
}
}
前の値に基づいて値を更新します。
echo '[1,2,3,4,5]' | dasel -i json --root 'each($this = $this*2)'
# Output:
[
2,
4,
6,
8,
10
]
フォーマット変換
cat data.json | dasel -i json -o yaml
再帰的な走査(..)
一致するキーまたはインデックスを、すべてのネストされたオブジェクトと配列から検索します。
echo '{"foo": {"bar": "baz"}}' | dasel -i json '..bar'
# Output:
[
"baz"
]
検索(search)
構造内のあらゆる場所から、条件に一致するすべての値を見つけます。
echo '{"foo": {"bar": "baz"}}' | dasel -i json 'search(bar == "baz")'
# Output:
[
{
"bar": "baz"
}
]
ドキュメント
完全なドキュメントはdaseldocs.tomwright.meでご覧いただけます。
コントリビューション
コントリビューションを歓迎します。詳細はCONTRIBUTING.mdをご覧ください。
ライセンス
MIT ライセンスです。詳細はLICENSEをご覧ください。