Text-Processing

傑森。後面怎麼加句:

  • February 11, 2019

以下是我擁有的 json 文件的摘錄:

},
  {
   "name": "asdasd",
   "script": "dsad.js",
   "merge_logs": ture,
   "error_file": "/ofghfghgfh.log",
   "out_file": "/fghgfhfgg",
   "cwd": "",
   "autorestart": true,
   "log_date_format"  : "YYYY-MM-DD HH:mm Z",
   "env": {
   "NODE_ENV": "desa",
   "KEY": "VtZOiz0Qc4afFs6j+h2r"
   }
 }]

我想在“KEY”之後添加一個片語:替換它現在擁有的值。

我嘗試了“sed”,但我將它添加到了行尾

sed '/KEY/s/$/1234/g' .json

我需要使用“-i”選項直接更改文件。

您可以使用它(使用i選項來修改文件,但首先檢查它是否正常工作):

sed -E 's/("KEY":) (".*")/\1 anything/g' .json

它會在兩部分中斷線,首先匹配"KEY":,然後是空格,它將用任何東西替換第二部分。

讓我們說KEY='"1234"'(通過使用單引號 KEY 的值將是"1234")。然後就可以使用了。

sed -E "s/(\"KEY\":) (\".*\")/\1 $KEY/g" .json

sed是這項工作的錯誤工具。正確的工具之一是jq.

%貓wibble.json 
[
{
“名稱”:“asdasd”,
“腳本”:“dsad.js”
},
{
"log_date_format" : "YYYY-MM-DD HH:mm Z",
“環境”:{
"NODE_ENV": "德薩",
“KEY”:“VtZOiz0Qc4afFs6j+h2r”
}
}
]
% jq '.[1]."env"."KEY" = "1234"' wibble.json
[
{
“名稱”:“asdasd”,
“腳本”:“dsad.js”
},
{
"log_date_format": "YYYY-MM-DD HH:mm Z",
“環境”:{
"NODE_ENV": "德薩",
“鑰匙”:“1234”
}
}
]
%

它甚至發現您的 JSON 實際上是無效的。

%jq。ortiga.json
解析錯誤:第 4 行第 23 列的文字無效
%

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