如何显示匹配模式的特定数组元素数组

问题描述 投票:0回答:1

我有以下数组,其中包含数千个 json 元素,如下所示

[ {
“id”:302, “主机名”:“laptop857”, “总内存”:31722, “总交换量”:92535, “分布”:“22.04”, “硬件”: [ [ “产品”, “XPS 15 7590 (0905)”, 无效的 ], [ “小贩”, “戴尔公司”, 无效的 ], [ “连续剧”, “XXDPXXX”, 无效的 ] ] } { “id”:303, “主机名”:“laptop858”, .... }, ]

我的目标是解析 json 文件并为每个元素提取主机名、发行版和序列号。我想创建一个报告,其中每一行代表一台计算机,例如 笔记本电脑857,22.04,XXDPXXX 笔记本电脑858,....

我能够同时输出主机名和发行版 我也可以对序列号执行此操作,但某些条目没有序列号并且解析失败 无论我尝试将 3 个元素放在同一行上,我总是收到错误

有人可以提供点击或我应该注意什么来实现我的结果的任何机会 我可以接受这样的条目 laptop857,22.04,串行 XXDPXXX 空

jq
1个回答
0
投票

您可以使用

?
抑制由不存在的部件引起的错误,并使用
//
提供默认替代方案。例如:

.[] | [
  .hostname,
  .distribution,
  first(.hardware[] | select(.[0] == "serial") | .[1])? // "none"
] | @csv

演示

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.