Я не знаком с bbswitch
, поэтому не знаю, сколько деталей вам понадобится.
В то время как acpidump
выгружает таблицы, лучше выгружать их в двоичном формате (acpidump -b
, создавать различные файлы )и затем использовать iasl
для их декомпиляции.
Стандарт ACPI довольно сложен, подробности можно найти здесь или здесь . Возможно, вам придется довольно много читать.
Выражение 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
Следующее должно работать:
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
для отправки измененного вывода непосредственно в файл.
Вам нужно сгруппировать их в скобках.