【问题标题】:jq: How to output quotes on raw output on windowsjq:如何在 Windows 上的原始输出中输出引号
【发布时间】:2016-02-04 15:00:27
【问题描述】:

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

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

生成

Result is: b.

但是我怎样才能生成

Result is: "b".

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

【问题讨论】:

  • 尝试\"Result is: \"\"\" + .a + \"\"\".\"时会发生什么
  • jq: 错误:语法错误,意外 QQSTRING_START,在 第 1 行期待 $end(Windows cmd shell 引用问题?):.[] | "结果是:""" + .a + """。" jq: 1 编译错误

标签: jq


【解决方案1】:

您需要转义斜线以转义 "

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

【讨论】:

  • plus1 拯救了我的一天。
【解决方案2】:

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

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

[已修改以反映 OP 目标。]

【讨论】:

  • 哦,对了,这肯定行得通,但他只想要 a 属性的 json 表示,而不是整个对象。
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    相关资源
    最近更新 更多