Вы не должны удалять /dev/ram0
самостоятельно. Он будет удален, когда вы выполните sudo rmmod brd
, что освободит место и удалит модуль. Затем вы можете начать снова с modprobe
.
Использованиеjq
:
$ jq '.topics[0].topic |= "test_1"' file.json
{
"topics": [
{
"topic": "test_1"
}
],
"version": 1
}
Это читает документ JSON и изменяет значение записи topic
первого элемента массива topics
на строку test_1
.
Если у вас есть значение в переменной (в кодировке UTF -8):
$ val='Some value with "double quotes"'
$ jq --arg string "$val" '.topics[0].topic |= $string' file.json
{
"topics": [
{
"topic": "Some value with \"double quotes\""
}
],
"version": 1
}
Использование Perl:
$ perl -MJSON -0777 -e '$h=decode_json(<>); $h->{topics}[0]{topic}="test_1"; print encode_json($h), "\n"' file.json
{"topics":[{"topic":"test_1"}],"version":1}
С переменной:
$ val='Some value with "double quotes"'
$ STRING=$val perl -MJSON -0777 -e '$string = $ENV{STRING}; utf8::decode $string; $h=decode_json(<>); $h->{topics}[0]{topic}=$string; print encode_json($h), "\n"' file.json
{"topics":[{"topic":"Some value with \"double quotes\""}],"version":1}
Оба они используют модуль Perl JSON
для декодирования документа JSON, изменения значения, которое необходимо изменить, а затем вывода повторно -закодированной структуры данных. Обработка ошибок оставлена в качестве упражнения.
Для второго фрагмента кода вставляемое значение передается как переменная среды STRING
в код Perl. Это связано с чтением документа JSON из файла в режиме «slurp» с -0777
.
Вместо сопоставления [A-Za-z_]
(, которое, кстати, соответствует гораздо большему количеству, чем английские буквы и символы подчеркивания в большинстве локалей ), используйте [^"]
для любого символа, отличного от "
(, кстати, образец в вашем вопросе имеет”
(U + 201D,RIGHT DOUBLE QUOTATION MARK
)вместо цитаты json ("
, U + 0022,QUOTATION MARK
)в качестве закрывающей цитаты после названия темы,Я предполагаю, что это не так в ваших исходных файлах, поскольку это сделало бы его недействительным json):
sed 's/\("topic": "\)[^"]*/\1test_1/' < file.json
(обратите внимание, что вы несете ответственность за то, чтобы замена имени темы была правильно закодирована JSON -:UTF -8 кодировок, управляющие символы закодированы (например \n
для новой строки )и "
закодировано как\"
).