我有一个 json 文件,其中需要删除一个 json 对象。有什么方法可以仅通过 sed 命令删除它。我的示例文件如下。
{
"name": "ABC",
"description": "XYZ",
"versions": {
},
"json_class": "Chef::Environment",
"chef_type": "environment",
"default_attributes": {
},
"override_attributes": {
"company": {
"xyz": {
"mailer":{
"smtp_host": "Some IP",
"imap_host": "Some Host",
"imap_user": "Some UserId",
"reply_to": "Some User Id",
"outbound_user": "",
"imap_mail_domain": "compute.oraclecloud.com",
"imap_password": ""},
"logicaldomainname": ""
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在这个文件中,我想通过 sed 命令从文件中删除邮件程序对象。请看一看,让我知道是否可以通过 sed 命令。
我这次删除的主要动机是用新的邮件程序对象替换这个对象。以便下次发布另一个邮件程序对象时,我们会将其附加到 xyz json 对象中。
预期输出:
{
"name": "ABC",
"description": "",
"version": {
},
"json_class": "Chef::Environment",
"chef_type": "environment",
"default_attributes": {
},
"override_attributes": {
"Company": {
"XYZ": {
"logicaldomainname": ""
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用sed:
sed '/\"mailer\"/,/}/ d; /^$/d' 1.a
Run Code Online (Sandbox Code Playgroud)
“从mailer第一个}删除,然后删除所有空行(您输入的有一个)”。
覆盖文件(“就地”)
sed -i ...
Run Code Online (Sandbox Code Playgroud)
注意:适用于多行文件(如你的)。
您应该强烈考虑解决禁止jq以下内容的许可问题:
jq 'del(.override_attributes.company.xyz.mailer) | .description=""' input.json
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6939 次 |
| 最近记录: |