JSON. Как добавить предложение после:

Загрузил систему с живого носителя Ubuntu. Установите пакет LVM, который читает раздел LVM на диске.

Запустите команду fsck на / patition жесткого диска пользователем root.

Это займет время, чтобы исправить недостающие записи. Также это ошибка суперблока в Fedora.

-2
09.02.2019, 21:22
4 ответа

Вы можете использовать эту (опцию iдля изменения файла, но сначала проверьте, правильно ли он работает):

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

Он разделит строку на две части, сначала будет соответствовать "KEY":, а затем пробел и заменит вторую часть чем угодно.

Скажем,KEY='"1234"'(с помощью одинарной кавычки значение KEY будет"1234"). Тогда вы можете использовать.

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

Исправлен код

Команда:

sed '/KEY/s/"KEY":/&1234/' filename


Here we adding 1234 after "KEY"

выход

},
   {
    "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":1234 "VtZOiz0Qc4afFs6j+h2r"
    }
  }]
0
28.01.2020, 05:14

sedне подходит для этой работы. Одним из правильных инструментов является jq.

% cat wibble.json                               
[
  {
    "name": "asdasd",
    "script": "dsad.js"
  },
  {
    "log_date_format"  : "YYYY-MM-DD HH:mm Z",
    "env": {
            "NODE_ENV": "desa",
            "KEY": "VtZOiz0Qc4afFs6j+h2r"
    }
  }
]
% jq  '.[1]."env"."KEY" = "1234"' wibble.json
[
  {
    "name": "asdasd",
    "script": "dsad.js"
  },
  {
    "log_date_format": "YYYY-MM-DD HH:mm Z",
    "env": {
      "NODE_ENV": "desa",
      "KEY": "1234"
    }
  }
]
% 

Он даже замечает, что ваш JSON на самом деле недействителен.

% jq. ortiga.json
parse error: Invalid literal at line 4, column 23
%
7
28.01.2020, 05:14

вложенные структуры, (такие как xml, html, json и т. д., )должны обрабатываться утилитами, которые осведомлены о модели данных. если полагаться на инструменты, поддерживающие строку -, такие как sed, awk, то всегда будет вероятность ложных срабатываний.

Следовательно, входные данные JSON должны обрабатываться инструментами, поддерживающими JSON. ответ jq уже был дан, вот альтернативное решение, основанное наjtc:

bash $ cat file.json | jtc -w'<KEY>l' -eu echo '"1234"' \;
{
   "autorestart": true,
   "cwd": "",
   "env": {
      "KEY": "1234",
      "NODE_ENV": "desa"
   },
   "error_file": "/ofghfghgfh.log",
   "log_date_format": "YYYY-MM-DD HH:mm Z",
   "merge_logs": true,
   "name": "asdasd",
   "out_file": "/fghgfhfgg",
   "script": "dsad.js"
}
bash $ 
0
28.01.2020, 05:14

Теги

Похожие вопросы