Как заменить значение в файле json с помощью jq и вернуть все содержимое

Я не знаком с bbswitch, поэтому не знаю, сколько деталей вам понадобится.

В то время как acpidumpвыгружает таблицы, лучше выгружать их в двоичном формате (acpidump -b, создавать различные файлы )и затем использовать iaslдля их декомпиляции.

Стандарт ACPI довольно сложен, подробности можно найти здесь или здесь . Возможно, вам придется довольно много читать.

2
18.08.2021, 23:56
2 ответа

Выражение jq

.HeaderAuthentication.Headers[] | select(.Name == "api-key")

выбирает элемент массива Headers, который имеет api-keyв качестве значения Name.

Выражение

(.HeaderAuthentication.Headers[] | select(.Name == "api-key")).Value |= "NEW VALUE"

обновляет значение ключа Valueв этом элементе массива до буквальной строки NEW VALUE.

Использование переменной оболочки, которая содержит новое значение, из командной строки:

new_api_key='My new key'
jq --arg newkey "$new_api_key" '(.HeaderAuthentication.Headers[] | select(.Name == "api-key")).Value |= $newkey' file.json

Если ключ должен быть закодирован в base64, обновите значение ($newkey|@base64)вместо $newkeyв выражении jq.

Чтобы изменить место -, используйте что-то вроде

tmpfile=$(mktemp)
cp file.json "$tmpfile" &&
jq --arg...as above... "$tmpfile" >file.json &&
rm -f -- "$tmpfile"

или, если вам не нужно сохранять исходные права доступа к файлу, владельца и т. д.,

tmpfile=$(mktemp)
jq --arg...as above... file.json >"$tmpfile" &&
mv -- "$tmpfile" file.json
2
20.08.2021, 10:24

Следующее должно работать:

tmp=$(mktemp /tmp/tmp.XXXXXXX)
jq  '(.HeaderAuthentication.Headers[] | select(.Name == "api-key") |.Value) = "xxx"' scanprofile.json  > "$tmp" && mv "$tmp"  scanprofile.json

Другой способ сделать это, например, использовать это:

cat <<< $(jq '(.HeaderAuthentication.Headers[] | select(.Name == "api-key") |.Value) = "xxx"' scanprofile.json ) > scanprofile.json

Здесь мы используем catдля отправки измененного вывода непосредственно в файл.

Вам нужно сгруппировать их в скобках.

1
20.08.2021, 10:24

Теги

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