Command-Line
如何從文件中刪除特定的 JSON 對象?
我在一個文件中有以下 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
從文件中刪除整個對象。我怎樣才能使用命令行工具來做到這一點?
要刪除
.packages.code
鍵及其值,請使用jq
:jq 'del(.packages.code)' file.json
.packages
要刪除其.name
鍵具有值的任何條目code
:jq 'del(.packages[] | select(.name == "code"))' file.json
相同的兩個命令,但它們
code
從 shell 變數中獲取字元串:string=code jq --arg key "$string" 'del(.packages[$key])' file.json jq --arg key "$string" 'del(.packages[] | select(.name == $key))' file.json
將輸出重定向到一個新文件,如果它看起來沒問題,用它替換舊文件。