我正在使用bash to json解析器jq
考虑到以下命令:
jq '. * .transitive | del(.transitive) | del(.scope,.scopedName)' package.json > package.github.json$$
以及以下输入:
{
"name": "navigation",
"transitive": {
"name": "navigation",
"scope": "bs",
"scopedName": "@bs/navigation"
}
}
我正在尝试获取以下输出:
{
"name": "@bs/navigation"
}
在删除
.scopedName
之前,有没有办法使用它的值来设置.name
? 最佳答案
将输入转换为输出非常简单:
jq '{"name": .transitive.scopedName}'
……当然,在删除之前,您可以重新排序设置
name
:jq '.name=.transitive.scopedName | del(.transitive)'
也就是说,如果您真的想先使用
transitive
,可以将内容保存在变量中,然后再使用它:jq '
.transitive as $transitive |
del(.transitive) |
.name=$transitive.scopedName
'
关于linux - jq是否可以在设置新值时使用已删除的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50937290/