大家好,我是 Java陳序員。
我們在日常開發中,經常會操作使用一些 JSON、YAML、XML 等格式的數據,對數據進行增刪改查和轉換操作。
今天,給大家分享一款強大的數據處理命令行工具,一行命令搞定數據操作!
關注微信公眾號:【Java陳序員】,獲取開源項目分享、AI副業分享、超200本經典計算機電子書籍等。
項目介紹
dasel —— 一款用於處理和操作多種數據格式的命令行工具,支持對 JSON、YAML、TOML、XML 和 CSV 格式數據進行查詢、修改、添加、刪除和轉換。
功能特色:
- 多格式支持:支持 JSON、YAML、TOML、XML 和 CSV 等常見數據格式
- 數據查詢與修改:可以通過類似路徑選擇器的語法,快速定位和修改數據
- 格式轉換:支持在不同數據格式之間進行轉換,例如將 JSON 轉換為 YAML
- 管道操作:支持與其他命令行工具結合使用,方便集成到自動化腳本中
- Go 包集成:也可以作為 Go 語言的庫集成到其他項目中
工具安裝
dasel 支持多種安裝方式和多種操作系統,可通過如下方式安裝。
- 離線安裝
從最新發布頁面下載編譯好的二進制文件。
https://github.com/TomWright/dasel/releases
-
使用 Homebrew 一鍵安裝
brew install dasel -
使用 Docker 安裝
echo '{"name": "Java陳序員"}' | docker run -i --rm ghcr.io/tomwright/dasel:latest -r json '.name' "Java陳序員" -
使用 Go 安裝開發版本
go install github.com/tomwright/dasel/v2/cmd/dasel@master
快速上手
查詢操作
-
從 JSON 文本中查詢數據
echo '{"name": "Java陳序員"}' | dasel -r json 'name'輸出:"Java陳序員"。
-r參數代表讀取數據,後面帶上數據類型,如json、yaml等。
- 從 JSON 文件數據中查詢數據,使用
-f參數指定文件名
dasel -f example.json -r json 'name'
輸出:"Java陳序員"。
-f 參數指定文件名。
更新操作
-
修改 JSON 文本數據
echo '{"name":{"first":"Java","last":"CodeChen"}}' | dasel put -r json -t string -v Java陳序員 'name.first'
輸出:
{
"name": {
"first": "Java陳序員",
"last": "CodeChen"
}
}
put參數代表對數據進行修改操作
-t參數代表數據類型,可以是string、int、bool
-v參數代表修改後的值
-
修改 JSON 文本數據
dasel put -f example.json -r json -t string -v Java陳序員 'name'
刪除操作
-
刪除 JSON 文本數據
echo '{"name":{"first":"Java陳序員","last":"CodeChen"}}' | dasel delete -r json 'name.last'
輸出:
{
"name": {
"first": "Java陳序員"
}
}
delete 參數代表對數據進行刪除操作
-
刪除 JSON 文本數據
dasel delete -f example.json -r json 'name'
轉換操作
-
JSON 轉 YAML
echo '{"name": "Java陳序員"}' | dasel -r json -w yaml
輸出:name: Java陳序員
-w參數代表轉換後的數據類型,後面帶上數據類型,如json、yaml等。
-
JSON 轉 YAML
echo 'name: Java陳序員' | dasel -r yaml -w json
輸出:
{
"name": "Java陳序員"
}
高級操作
-
匹配數據
echo '{"numbers":[1,2,3,4,5,6,7,8,9]}' | dasel -r json 'equal(numbers.[0],1)' true -
過濾數據
echo '[ > {"label":"x","allow":true}, > {"label":"y","allow":false}, > {"label":"z","allow":true} > ]' | dasel -r json 'all().filter(allow)' { "label": "x", "allow": true } { "label": "z", "allow": true } -
合併數據
echo '{ "name": { "first":"Tom", "last":"Wright" }, "firstNames": [ "Jim", "Bob" ] }' | dasel -r json 'merge(name.first,firstNames.all()).all()' [ "Tom", "Jim", "Bob" ]
dasel 還有其他強大的命令參數以及更多的數據類型操作,具體使用可參考官方文檔:
https://daseldocs.tomwright.me/
dasel 提供了簡單易用的命令行接口和強大的功能,適合在開發中快速處理結構化數據。快去安裝體驗吧~
https://github.com/TomWright/dasel
最後
推薦的開源項目已經收錄到 GitHub 項目,歡迎 Star:
https://github.com/chenyl8848/great-open-source-project
或者訪問網站,進行在線瀏覽:
https://chencoding.top:8090/#/
我創建了一個開源項目交流羣,方便大家在羣裏交流、討論開源項目。
但是任何人在羣裏打任何廣告,都會被 T 掉。
如果你對這個交流羣感興趣或者在使用開源項目中遇到問題,可以通過如下方式進羣:
關注微信公眾號:【Java陳序員】,回覆【開源項目交流羣】進羣,或者通過公眾號下方的菜單添加個人微信,並備註【開源項目交流羣】,通過後拉你進羣。
大家的點贊、收藏和評論都是對作者的支持,如文章對你有幫助還請點贊轉發支持下,謝謝!