Загрузил систему с живого носителя Ubuntu. Установите пакет LVM, который читает раздел LVM на диске.
Запустите команду fsck на / patition жесткого диска пользователем root.
Это займет время, чтобы исправить недостающие записи. Также это ошибка суперблока в Fedora.
Вы можете использовать эту (опцию i
для изменения файла, но сначала проверьте, правильно ли он работает):
sed -E 's/("KEY":) (".*")/\1 anything/g'.json
Он разделит строку на две части, сначала будет соответствовать "KEY":
, а затем пробел и заменит вторую часть чем угодно.
Скажем,KEY='"1234"'
(с помощью одинарной кавычки значение KEY будет"1234"
). Тогда вы можете использовать.
sed -E "s/(\"KEY\":) (\".*\")/\1 $KEY/g".json
Исправлен код
Команда:
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"
}
}]
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 %
вложенные структуры, (такие как 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 $