语法错误,意外 |=,期待“}”
syntax error, unexpected |=, expecting '}'
我想用jq过滤器构建一个json,用例很简单,
我有一个 json 文件,
# cat input.json
{"foo": 42, "bar": "less interesting data"}
我想用 jq 生成一个 json 文件,
输出:
增加 foo 的值,
[
{
"leafCalls": {
"text": 43
}
}
]
我使用的过滤器是这样定义的,
# cat results.jq
[.[] | . as { foo: $leafText, bar: $leafCode} | {
leafCall: {
text: $leafText
},
} | {
leafCalls: .leafCall |= . + 1
}]
但是存在语法问题,如下所述,
# <input.json jq --slurp --from-file results.jq > output.json
jq: error: syntax error, unexpected |=, expecting '}' (Unix shell quoting issues?) at <top-level>, line 6:
leafCalls: .leafCall |= . + 1
jq: 1 compile error
此外,如果想将一个字符串连接到"bar"的值,也有一个问题,
因为我想要的是,
[
{
"leafCalls": {
"text": "less interesting data string"
}
}
]
过滤器是
# cat results2.jq
[.[] | . as { foo: $leafText, bar: $leafCode} | {
leafCall: {
text: $leafCode },
} | {
leafCalls: .leafCall + " " + "string"
}]
jq 说,
jq: error: syntax error, unexpected '+', expecting '}'
谁能告诉过滤器定义有什么问题?
要获得第一个输出,直接增加值。需要括号优先。
jq '[. as { foo: $leafText } | {
leafCalls: {
text: ($leafText + 1)
},
}
]' input.json
字符串也类似:
jq '[ . as { foo: $leafText, bar: $leafCode}
| { leafCalls: { text: ($leafCode + " string" ) } } ]
' input.json
我想用jq过滤器构建一个json,用例很简单,
我有一个 json 文件,
# cat input.json
{"foo": 42, "bar": "less interesting data"}
我想用 jq 生成一个 json 文件,
输出: 增加 foo 的值,
[
{
"leafCalls": {
"text": 43
}
}
]
我使用的过滤器是这样定义的,
# cat results.jq
[.[] | . as { foo: $leafText, bar: $leafCode} | {
leafCall: {
text: $leafText
},
} | {
leafCalls: .leafCall |= . + 1
}]
但是存在语法问题,如下所述,
# <input.json jq --slurp --from-file results.jq > output.json
jq: error: syntax error, unexpected |=, expecting '}' (Unix shell quoting issues?) at <top-level>, line 6:
leafCalls: .leafCall |= . + 1
jq: 1 compile error
此外,如果想将一个字符串连接到"bar"的值,也有一个问题,
因为我想要的是,
[
{
"leafCalls": {
"text": "less interesting data string"
}
}
]
过滤器是
# cat results2.jq
[.[] | . as { foo: $leafText, bar: $leafCode} | {
leafCall: {
text: $leafCode },
} | {
leafCalls: .leafCall + " " + "string"
}]
jq 说,
jq: error: syntax error, unexpected '+', expecting '}'
谁能告诉过滤器定义有什么问题?
要获得第一个输出,直接增加值。需要括号优先。
jq '[. as { foo: $leafText } | {
leafCalls: {
text: ($leafText + 1)
},
}
]' input.json
字符串也类似:
jq '[ . as { foo: $leafText, bar: $leafCode}
| { leafCalls: { text: ($leafCode + " string" ) } } ]
' input.json