如何将多个参数传递给 jq?

4

我正在尝试编写一个新的Json文件。我希望定义多个变量,然后通过管道将它们设置为新的json文件中不同的属性。

jq --arg dnb "$DOMAIN_NAME_BUILT" --arg origin "$DOMAIN_ID_BUILT" \ 
   '.Origins.Items[0].DomainName = $dnb' | '.Origins.Items[0].Id = $origin' distconfig.json > "$tmp" && mv "$tmp" distconfig.json

这个命令可以用一个参数来运行:--arg NAME VALUE pattern,但是当我加入第二个参数并使用管道操作jq ... 'x1 = y1 | x2 = y2时,它就会出错。

1个回答

15

管道应该在过滤器内部。此外,考虑使用赋值运算符来缩短您的代码:


jq --arg dnb "$DOMAIN_NAME_BUILT" \
   --arg origin "$DOMAIN_ID_BUILT" \
   '.Origins.Items[0] |= ( .DomainName = $dnb | .Id = $origin )' \
distconfig.json > "$tmp" && mv "$tmp" distconfig.json

键的值(例如DomainNameId)可以作为参数传递并以相同的方式使用吗? - msoutopico
1
@msoutopico 是的。在这种情况下,您需要使用.[$foo]而不是.DomainName - oguz ismail

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接