Json 从目录中的所有文件中删除文本块
我在一个.json类型的目录中有100个文件。在这些文件中,我在所有文件中都有以下块Json 从目录中的所有文件中删除文本块,json,bash,shell,Json,Bash,Shell,我在一个.json类型的目录中有100个文件。在这些文件中,我在所有文件中都有以下块 "bind_dev": [ "eth0", "bond0" ], 我想从所有扩展名为.json的文件中删除此块。如何使用linux shell实现这一点 { "name": "wnx_production", "description": "Wellnext", "cookbook_versions": { "fms-base": "
"bind_dev": [
"eth0",
"bond0"
],
我想从所有扩展名为.json的文件中删除此块。如何使用linux shell实现这一点
{
"name": "wnx_production",
"description": "Wellnext",
"cookbook_versions": {
"fms-base": "= 1.0.49",
"fms-zabbix": "= 0.1.35",
"linuxad_auth": "= 0.2.75",
"itcs104_bundle": "= 0.3.23",
"policy_all_deep_security": "= 0.1.17",
"fms-pdns": "= 0.1.38",
"fms-yum": "= 0.1.17",
"tscm": "= 1.0.29",
"sudo": "= 2.7.10"
},
"json_class": "Chef::Environment",
"chef_type": "environment",
"default_attributes": {
"satellite-client": {
"capsule": {
"capsule_name": "dal13ammcaps01.imzcloud.ibmammsap.local"
}
},
"kickstart_ip": "146.89.142.214",
"tscm": {
"kickstart_ip": "146.89.142.214",
"bind_dev": [
"eth0",
"bond0"
],
"server_ip": "169.55.192.110",
"proxy_ip": "169.55.28.46",
"installer_url": "http://146.89.142.214/post_data/pkg/tivoliscm/"
},
"sudo": {
"include_sudoers_d": false,
"suroot_alias": "SUROOT"
},
"itcs104_bundle": {
"gem_source": {
"ssl_verify": false,
"clear": true
}
},
"sshd_config": {
"permitrootlogin": "without-password"
},
"chef-client-12": {
"chef-client-location": "http://146.89.142.214/post_data/pkg/chef"
}
}
}
是从shell操作JSON数据的最佳方式。以下是如何使用它来处理每个文件:
for file in *.json; do
jq 'del(.default_attributes.tscm.bind_dev)' "$file" > "$file.tmp" &&
mv "$file.tmp" "$file"
done
是从shell操作JSON数据的最佳方式。以下是如何使用它来处理每个文件:
for file in *.json; do
jq 'del(.default_attributes.tscm.bind_dev)' "$file" > "$file.tmp" &&
mv "$file.tmp" "$file"
done
首先,我不会为此使用sed。就我个人而言,我会用Perl编写它,但这不是您要求的 第二,仔细测试,我的意思是,首先备份整个安装程序,然后运行几次,看看它做的都是您想要的,而且只是您想要的。(同样,使用Perl…但既然您要求…) 那太简单了。最好在正则表达式中添加更多细节,但有时太多会使它丢失一些东西,而不够多会使它删除一些您不想丢失的东西
c、 f:为了扩展sed正则表达式,祝你好运。首先,我不会用sed来做这个。就我个人而言,我会用Perl编写它,但这不是您要求的 第二,仔细测试,我的意思是,首先备份整个安装程序,然后运行几次,看看它做的都是您想要的,而且只是您想要的。(同样,使用Perl…但既然您要求…) 那太简单了。最好在正则表达式中添加更多细节,但有时太多会使它丢失一些东西,而不够多会使它删除一些您不想丢失的东西 c、 f:到扩展sed正则表达式,祝你好运