jq: как вывести котировки на необработанный вывод в windows
Используя raw output, я должен процитировать некоторые значения вывода.
echo [{"a" : "b"}] | jq-win64.exe --raw-output ".[] | "Result is: " + .a + ".""
Порождает
Result is: b.
Но как я могу генерировать
Result is: "b".
К сожалению, он должен работать на Windows, вызываемой из файла CMD.
3 ответов:
Вам нужно избежать косых черт, чтобы избежать
"$ echo [{"a" : "b"}] | jq-win64.exe --raw-output ".[] | \"Result is: \\\"\" + .a + \"\\\".\"" Result is: "b".
Хаки обходной путь с меньшим обратным Слэшем может быть:
jq -r ".[] | \"Result is: \" + (.a|tojson)"[пересмотрено с учетом цели ОП.]
Поскольку вы пытаетесь вывести двойные кавычки в строке с двойными кавычками, вам нужно экранировать внутренние кавычки. И чтобы избежать внутренних кавычек, вам нужно также избежать убегающих обратных косых черт. Таким образом, буквальная двойная кавычка должна быть введена как
\\\". Вы можете сделать это немного чище, используя интерполяцию строк вместо обычной конкатенации строк.jq -r ".[] | \"Result is: \\\"\(.a)\\\".\""
Comments