私のファイルには次のJSONデータがあります。
{
"packages": {
"cc": {
"name": "cc",
"version": "3.1",
"release": "0.4",
"arch": "x86"
},
"code": {
"name": "code",
"version": "3.0",
"release": "2.0.2",
"arch": "x86"
}
}
}
code
ファイルからオブジェクト全体を削除したいです。コマンドラインツールを使用してこれをどのように実行できますか?
答え1
.packages.code
キーとその値を削除するには、次を使用しますjq
。
jq 'del(.packages.code)' file.json
キー値が次の項目を.packages
削除するには、次の手順を実行します。.name
code
jq 'del(.packages[] | select(.name == "code"))' file.json
両方のコマンドは同じですが、code
シェル変数から文字列を取得します。
string=code
jq --arg key "$string" 'del(.packages[$key])' file.json
jq --arg key "$string" 'del(.packages[] | select(.name == $key))' file.json
出力を新しいファイルにリダイレクトし、問題がなければ、古いファイルをそのファイルに置き換えます。