Alex
Alex

Reputation: 125

jq: How to output quotes on raw output on Windows

Using raw output, I have to quote some values of the output.

For example,

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

generates

Result is: b.

but how can I generate the following?

Result is: "b".

Unfortunately, it has to run on Windows, called from inside a CMD file.

Upvotes: 4

Views: 11611

Answers (3)

user3899165
user3899165

Reputation:

A hacky workaround with less backslashing could be:

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

Upvotes: 3

RedX
RedX

Reputation: 15175

You need to escape the slashes to escape a "

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

Upvotes: 2

Jeff Mercado
Jeff Mercado

Reputation: 134521

Since you're trying to output double quotes in a double quoted string, you need to escape the inner quotes. And to escape the inner quotes, you need to also escape the escaping backslashes. So a literal double quote would have to be entered as \\\". You can do this a little cleaner by using string interpolation instead of regular string concatenation.

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

Upvotes: 0

Related Questions