我有以下config.json
文件:
{
"auths": {
"reg1.io": {
"auth": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"reg2.io": {
"auth": "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
},
"reg3.io": {
"auth": "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
}
}
}
我只想保留reg2.io
要获取的对象:
{
"auths": {
"reg2.io": {
"auth": "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
}
}
}
我可以删除一个特定的对象,例如:
→ jq 'del(.. | ."reg2.io"? )' ./config.json
{
"auths": {
"reg1.io": {
"auth": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"reg3.io": {
"auth": "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
}
}
}
但是如果我想保留一个特定的对象怎么办?谢谢。
使用
select()
withwith_entries()
仅选择所需的键:参数化以便它从命令行获取所需的密钥:
将 更改
==
为!=
删除指定的键。请注意,您自己的尝试不会区分在文档中找到密钥的位置,这在一般情况下可能会造成一些混淆。
只是为了对表达式中发生的事情添加更多解释
jq
。在
with_entries()
命令中,可见的是以下一组对象,每个对象都有一个key
和一个value
键:该
select()
调用提取给定测试为真的每个对象,并丢弃其余对象。我们的测试只是“key
键的值是字符串吗reg2.io
?”。对的调用
with_entries(expr)
等同于to_entries | map(expr) | from_entries
.