考虑一个JSON对象,如
{
"foo": 42,
"baz": -12,
"bar{label1=\"value1\"}": 12.34
}
由jq使用某些数据源构成。实际的键名及其数量可能有所不同,但结果始终是一个以数字(整数或浮点数)作为值的对象。键可能包含引号,但不能包含空格。
我可以使用jq将对象格式化为Prometheus兼容的格式,以便仅使用输出将数据推送到Prometheus Pushgateway吗?
所需的结果看起来像
foo 42
bar{label1="value1"} 12.34
baz -12
即空格之间用换行符分隔(没有\r
),除了标签值外没有引号。
我不能使用bash进行后处理,因此,如果可能的话,我希望使用纯jq解决方案。
答案 0 :(得分:3)
使用keys_unsorted
获取对象键(keys
相同,但前者更快),通过字符串插值生成所需的输出。
$ jq -r 'keys_unsorted[] as $k | "\($k) \(.[$k])"' file
foo 42
baz -12
bar{label1="value1"} 12.34
而且,通过添加-j
选项并按照@peak的建议手动打印换行符,可以使它变得可移植。
答案 1 :(得分:2)
在Windows平台上,jq通常将CR-LF用于换行符;为防止这种情况,请使用-j命令行选项,并手动插入所需的'newline'字符,如下所示:
public Response Hello(Request request)
{
IronPdf.Installation.TempFolderPath = @"/tmp";
IronPdf.HtmlToPdf Renderer = new IronPdf.HtmlToPdf();
var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello from DocThread</h1>");
PDF.SaveAs("/tmp/sample.pdf");
return new Response("Go Serverless v1.0! Your function executed successfully!", request);
}