如何使用'和'组合两个jq条件。
test.json
{
"url": "https://<part1>.test/hai/<part1>",
"ParameterValue": "<value>"
}
jq --arg input1 "$arg1" --arg input2 "$arg2" \
'if .url | contains("<part1>")
then . + {"url" : ("https://" + $input1 + ".test/hai/" + $input1) }
else . end' and
'if .ParameterValue == "<value>"
then . + {"ParameterValue" : ($input2) }
else . end' test.json > test123.json
答案 0 :(得分:0)
and
是一个布尔(逻辑)运算符。您想要的是使用&#39; |&#39;:
jq --arg input1 "$arg1" --arg input2 "$arg2" '
if .url | contains("<part1>")
then . + {url : ("https://" + $input1 + ".test/hai/" + $input1) }
else . end
| if .ParameterValue == "<value>"
then . + {ParameterValue : $input2 }
else . end' test.json > test123.json
或者更好:
def when(filter; action): if (filter?) // null then action else . end;
when(.url | contains("<part1>");
.url = ("https://" + $input1 + ".test/hai/" + $input1))
| when(.ParameterValue == "<value>";
.ParameterValue = $input2)