如何用 yq 的 pick 按指定顺序保留映射键并用 omit 剔除键

发布时间:2026/9/15 19:18:28

如何用 yq 的 pick 按指定顺序保留映射键并用 omit 剔除键 如何用 yq 的 pick 按指定顺序保留映射键并用 omit 剔除键【免费下载链接】yqyq is a portable command-line YAML, JSON, XML, CSV, TOML, HCL and properties processor项目地址: https://gitcode.com/GitHub_Trending/yq/yq处理 YAML 文件时经常遇到这样的需求一个映射里键很多但只想要其中几个并且希望输出的键顺序由自己指定或者相反想按黑名单把不要的键剔除掉。yq 提供了两个配套的操作符完成这件事pick按指定键列表保留键并且返回的键顺序与 pick 列表中的顺序一致omit则按指定键列表剔除键。两者都是 yq 表达式的一部分yq 采用类 jq 语法对 YAML、JSON 等格式通用。本文给出这两个操作符在映射键上的完整用法命令、输入文件、对应的文档示例输出以及如何用-i把结果写回文件。准备条件已安装 yq 二进制。yq 用 Go 编写提供无依赖的单文件二进制可通过直接下载二进制、brew install yq或snap install yq等方式安装参见 README.md 的 Install 章节。一个待处理的 YAML 文件。本文沿用 yq 文档中 pick.md 使用的样例文件sample.ymlmyMap: cat: meow dog: bark thing: hamster hamster: squeaksample.yml为占位文件名实际使用时替换成你自己的 YAML 文件路径即可。用 pick 按指定顺序保留映射键对目标映射使用相对赋值形式|把映射替换为pick(...)的结果。语法要点|是 assign 操作符 的相对形式以 LHS 节点本身作为上下文对 RHS 求值yq .myMap | pick([hamster, cat, goat]) sample.yml规则来自 pick.md返回的键顺序与 pick 列表中的顺序一致这里先列出hamster、再cat所以hamster排在前面列表中不存在于映射的键如goat会被跳过不会报错。按文档示例上面的命令输出为myMap: hamster: squeak cat: meow可选分支指定键置顶同时保留其余全部键如果不想丢键只想让某几个键排到前面可以把指定键 现有全部键拼成列表后去重再交给pick。文档给出的写法是yq .myMap | pick( ([thing] keys) | unique) sample.yml其中keys操作符返回当前映射的全部键见 keys.mdunique去掉拼接后产生的重复项并保持原数组顺序见 unique.md。文档示例输出myMap: thing: hamster cat: meow dog: bark hamster: squeak用 omit 按黑名单剔除键omit与pick互补你列出不想要的键其余键保留。语法与pick相同只需替换操作符名见 omit.mdyq .myMap | omit([hamster, cat, goat]) sample.yml规则同样是不存在的键被跳过goat不在映射中不影响执行。按文档示例输出为myMap: dog: bark thing: hamster注意区别omit保留的是原文件中未被剔除的键它们的相对顺序维持原文件的键顺序dog在thing前而pick的输出顺序由你传入的列表决定。选择哪个操作符取决于你的需求是白名单保留指定键、自己定序还是黑名单剔除指定键、其余不动。把结果写回文件上面的命令只把结果打印到标准输出不修改原文件。README 的 Quick Usage Guide 给出原地更新方式加-i标志yq -i .myMap | pick([hamster, cat, goat]) sample.yml执行后sample.yml的内容被更新为 pick 的结果。该操作会直接改写文件没有备份机制执行前请确认文件可被覆盖或自行先做备份。验证方式与边界验证方法直接看命令输出或-i后查看文件内容对照文档示例判断pick输出的键集合应等于pick 列表 ∩ 原映射键集合且键顺序与 pick 列表一致omit输出应为原映射去掉黑名单键剩余键维持原顺序。两个操作符都接受不存在的键而不报错所以输出与预期不符时应优先检查键名拼写是否与映射中的键一致而不是担心缺少键导致失败。pick/omit同样适用于数组此时列表传的是下标而非键名且同样跳过不存在的下标。例如对文件- cat - leopard - lion文档示例命令yq pick([2, 0, 734, -5]) sample.yml输出- lion - cat对应的数组 omit 示例yq omit([2, 0, 734, -5]) sample.yml输出- leopard见 omit.md。本文主路径是映射键数组用法仅作了解。更多表达式用法可参考仓库中pkg/yqlib/doc/operators/下的操作符文档目录。【免费下载链接】yqyq is a portable command-line YAML, JSON, XML, CSV, TOML, HCL and properties processor项目地址: https://gitcode.com/GitHub_Trending/yq/yq创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/15 19:18:28

Topaz Photo AI闪退蓝屏问题诊断与解决方案

1. 问题现象与初步诊断遇到Topaz Photo AI 4.0.1闪退后蓝屏的问题时,我首先注意到这是一个典型的软件与系统兼容性冲突案例。从技术角度看,这类问题通常涉及三个层面的交互异常:应用程序自身缺陷、显卡驱动兼容性问题以及系统内存管理故障。在…

2026/9/15 19:38:29

ChatGPT 4o与o3-mini:OpenAI新一代AI模型解析与应用指南

1. ChatGPT 4o与o3-mini:OpenAI新一代AI模型解析最近OpenAI在AI领域又有新动作,ChatGPT 4o和o3-mini这两个新模型的讨论热度持续攀升。作为长期关注AI技术发展的从业者,我仔细研究了这两个模型的特性与应用场景,发现它们在性能优化…

2026/9/15 19:38:29

ThinkPHP6学生成绩管理系统源码解析与扩展实践

简介:这是一套基于ThinkPHP6框架开发的学生成绩管理系统源码,专为中小学教师、教务管理人员及PHP初学者设计,解决日常成绩录入、统计分析与多角色协同管理的实际痛点。资源包共1836个文件,主体为1083个PHP后端逻辑文件、166个JS交…

2026/9/15 19:38:29

EKF-SLAM可观测性分析与MATLAB实现改进

1. 项目背景与核心问题在机器人自主导航领域,同时定位与地图构建(SLAM)技术一直是研究的重点和难点。扩展卡尔曼滤波器(EKF)作为经典的SLAM实现方法,虽然理论成熟但在实际应用中经常出现不一致性问题。这个…

2026/9/15 19:33:29

three.js r137 离线包全解析:从 importmap 到数字孪生场景搭建

简介:three.js-r137.zip 是为前端开发者准备的 three.js r137 版本资料集,聚焦 WebGL 3D 渲染技术,帮助读者快速掌握在浏览器中构建三维场景的方法。压缩包共 2000 个文件,约 306.64MB,以 JS 源码和 HTML 示例为主&…

2026/9/15 4:54:30

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/15 0:01:16

AI英语单词APP开发:自适应学习算法与移动端优化实践

1. 项目概述 作为一名在移动应用开发领域摸爬滚打多年的老手,我最近完成了一个AI英语单词APP的开发项目。这个项目将传统单词记忆方法与现代AI技术相结合,打造了一款能够智能适应不同用户学习习惯的英语学习工具。 市面上大多数单词APP都存在一个通病&a…

2026/9/15 0:01:16

Flutter与OpenHarmony结合开发手语学习APP实战

1. 项目背景与核心价值作为一名同时接触过Flutter和OpenHarmony的开发者,最近我完成了一个基于Flutter for OpenHarmony的手语学习APP实战项目。这个项目最大的特点在于实现了跨平台框架与国产操作系统深度结合的创新实践——用Flutter开发的应用能完美运行在OpenHa…

2026/9/15 0:01:16

六个月成为机器人工程师:从ROS2到SLAM的实战路径

1. 六个月的紧迫感从哪来:先搞清楚你要成为哪种机器人工程师说实话,六个月的期限并不是一个宽松的时间线。市面上任何一本正经的机器人学教材都超过五百页,ROS2的官方文档可以翻到你怀疑人生,再加上ABB、KUKA这些工业机器人厂家动…

2026/9/15 14:22:53

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/14 13:53:59

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/15 11:42:23

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码