JSON:
"{
"a": "https://is2-ssl.com/",
"b": "https://a5.-ssl.com/",
"type": "response",
"c": [
{
"Number": 1,
"Reportname": "XXX",
"size": "2.5",
"Variants": [
"YYY"
]
}
],
"Meta": "ABC"
}
所需输出:
XXX,a,https://is2-ssl.com/
XXX,b,https://a5.-ssl.com/
我想打印那些值包含“http”(url)的键值对,并将键和值与分隔符“,”合并,并将 ReportName 添加到它们
假设
"
JSON 文档中的初始值是一个错字,您希望数组中第一个条目中的.ReportName
键值,并且您希望输出为 CSV:c
jq
表达式:这首先挑选出
.Reportname
值并将其分配给内部jq
变量$n
。然后它通过丢弃与以 substring 开头的字符串无关的任何键来重写原始对象http
。示例文档在
map_values()
缩减为然后将其转换
to_entries
为等价于...自己访问密钥。
该数组被扩展为一组对象,
[]
其中保存的值与该组中每个对象的一部分$n
一起用于创建一个数组,该数组被转换为引用的 CSV 输出。.key
.value
@csv
另一个
jq
具有相同输出的表达式,但它执行得更to_entries
早一些,然后map()
在创建的数组上执行,而不是像我们在map_values()
上面所做的那样在对象的值上执行。