Command-Line

如何從文件中刪除特定的 JSON 對象?

  • April 28, 2022

我在一個文件中有以下 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

將輸出重定向到一個新文件,如果它看起來沒問題,用它替換舊文件。

引用自:https://unix.stackexchange.com/questions/700580