使用和组合jq条件

时间:2018-02-02 16:30:29

标签: syntax jq

如何使用'和'组合两个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

1 个答案:

答案 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)