数据处理神器!一款强大的数据处理命令行工具!

大家好,我是 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 参数代表读取数据,后面带上数据类型,如 jsonyaml 等。

  • 从 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 参数代表数据类型,可以是 stringintbool

-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 参数代表转换后的数据类型,后面带上数据类型,如 jsonyaml 等。

  • 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陈序员】,回复【开源项目交流群】进群,或者通过公众号下方的菜单添加个人微信,并备注【开源项目交流群】,通过后拉你进群

大家的点赞、收藏和评论都是对作者的支持,如文章对你有帮助还请点赞转发支持下,谢谢!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/894497.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WEBAPI搜索不到MES收料批号

原因:MES收料批号没有发布菜单 解决:发布菜单后可以正常搜到。

linux 中sed命令删除指定分割符及其最后的一个域

001、[root@PC1 test2]# ls a.txt [root@PC1 test2]# cat a.txt ## 测试数据 W-URI-20 W-HYB-21 aaa fff-ddd-eee ZOM-1 ZOM-9 AWA-A-1 AWA-A-6 [root@PC1 test2]# sed s/-\S[^-]*$// a.txt ## 命令 W-URI W-HYB aaa fff-ddd ZOM ZOM AWA-A AWA-A。

vue+echarts 循环生成多个图表

借鉴网上开源分享 https://blog.csdn.net/weixin_49668076/article/details/114263986<template><!-- 实时数据图表 --><div class="main-container"><el-row class="totalEchart"><el-col :span="8" :key="ind…

智能合约学习笔记-进阶合约FundMe

收集投资 获取ETH/USD兑换rate 复制该地址页面内初始化 精度从这查找(precision) 表格中的 DEC(十进制)列显示了该数据流的精度,即 8。这意味着我们应该执行以下操作:return ethAmount * uint256(getChainlinkDataFeedLatestAnswer()) / (10 ** 8);coin和token 君不见…

Solidity学习笔记--基础语法

定义约定俗成:变量小写开头,类型或合约大写开头基础数据类型booluint256 无符号整型,代表一个不允许负数的整数。int256 有符号整型,代表一个能取到正数和负数的整数。 bytes32stringaddress合约:也可以作为数据类型去使用https://binschool.org/solidity-basic/soli…

solidity学习笔记-工厂模式

为什么使用(js的公共组件)如果要创建同一合约的多个实例,并且正在寻找一种跟踪它们并简化管理的方法。 提高合约安全性 降低部署成本实现(类似js的引入与调用) 君不见,高堂明镜悲白发,朝如青丝暮成雪

Python和Pycharm安装

Python简介 Python是一种计算机程序设计语言,它结合了解释性、编译性、互动性和面向对象的脚本语言,非常简单易用。Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。很多著名的网站都是用它编写…

从零开始在Springboot+Vue项目上搭建Nginx服务器,完成静态文件存放到本地电脑上。

一、事情的起因: 写管理系统的时候,数据表中有一个字段被用来存储上传图片的地址。本人在上传图片的时候,采用模拟上传操作,将照片存储到了本地电脑的D盘上。存放在数据表中字段的值为D:/uploads/1741141288982_bd8415d7a452957780e0193a075fedc.png。其中D:/uploads,是本…

【设计模式】从零开始,用原型模式简化你的Java对象创建过程!

概述 用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。 结构 原型模式包含如下角色:抽象原型类:规定了具体原型对象必须实现的的 clone() 方法。具体原型类:实现抽象原型类的 clone() 方法,它是可被复制的对象。访问类:使用具体原型类…

SWPU CTF 2023 秋季新生赛 If_else

题干 访问首页,源码如下 <?php $a=false; $b=false; if(你提交的部分将会被写至这里) {$a=true;} else {$b=true;} if($a===true&&$b===true) eval(system(cat /flag)); ?>分析源码发现,通过post方式传递check参数,如果该值既满足true又满足f…

**20242802 2024-2025-2 《网络攻防实践》第一周作业**

20242802 2024-2025-2 《网络攻防实践》第一周作业 1.知识点梳理与总结 1.1 相关知识点与总结 因为在本课之前我没有学习过网络攻防的相关知识,在第一次实验前我先阅读了课程资料中第0章和第1章的内容结合网络资料,我对本门课程有了大致的理解:学习网络攻防知识作为网络安全…

20242924 《网络攻防实践》第1周作业

20242924 任雯楚《网络攻防实践》 第1周作业 1.知识点梳理与总结 1.1 VMware Workstation 多系统并行运行:在单台物理机上同时部署多个虚拟机(如 Kali 攻击机、Metasploitable 靶机),支持 Windows/Linux 等异构系统共存。 1.2 虚拟机镜像 虚拟机镜像是一种虚拟机的文件,它…