jq:如何在Windows上输出原始输出的引号

时间:2016-02-04 15:00:27

标签: jq

使用原始输出我必须引用一些输出值。

echo [{"a" : "b"}] | jq-win64.exe --raw-output ".[] | \"Result is: \" + .a + \".\""

产生

Result is: b.

但是如何生成

Result is: "b".

不幸的是,它必须在从CMD文件内部调用的Windows上运行。

3 个答案:

答案 0 :(得分:2)

您需要转义斜杠才能转义"

$ echo [{"a" : "b"}] | jq-win64.exe --raw-output ".[] | \"Result is: \\\"\" + .a + \"\\\".\""
Result is: "b".

答案 1 :(得分:1)

更少反斜杠的hacky解决方法可能是:

jq -r ".[] | \"Result is: \" + (.a|tojson)"

[修订反映OP的目标。]

答案 2 :(得分:0)

由于您尝试在双引号字符串中输出双引号,因此需要转义内部引号。为了逃避内部引号,你还需要逃脱逃逸的反斜杠。因此,必须输入文字双引号为\\\"。你可以通过使用字符串插值而不是常规的字符串连接来做到这一点。

jq -r ".[] | \"Result is: \\\"\(.a)\\\".\""