考虑一个 JSON 对象,例如
{
"foo": 42,
"baz": -12,
"bar{label1=\"value1\"}": 12.34
}
建造者jq https://github.com/stedolan/jq使用一些数据源。实际的键名称及其数量可能会有所不同,但结果将始终是一个以数字(int 或 float)作为值的对象。键可以包含引号,但不能包含空格。
我可以使用 jq 将对象格式化为普罗米修斯 https://prometheus.io/- 兼容格式,这样我就可以使用输出将数据推送到 Prometheus Pushgateway?
所需的结果如下所示
foo 42
bar{label1="value1"} 12.34
baz -12
即用空格分隔换行符(没有\r
) 并且除了标签值之外不带引号。
我无法使用 bash 进行后处理,因此如果可能的话更喜欢纯 jq 解决方案。
Use keys_unsorted
获取对象键(keys
也做同样的事情,但前者更快),通过字符串插值生成所需的输出。
$ jq -r 'keys_unsorted[] as $k | "\($k) \(.[$k])"' file
foo 42
baz -12
bar{label1="value1"} 12.34
并且,通过添加-j
选项并按照@peak建议手动打印换行,您可以使其便携。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)