Bashでjqを使用してjsonファイルの複数の値を一度に更新する方法はありますか?例えば:
#!/bin/bash
explore_host_name () {
host_name_lastrun=$(date '+%Y-%m-%d %H:%M:%S,%3N')
host_name_value="$(hostname)"
result=$(jq --arg host_name_value "$host_name_value" '.host.properties.name.value = $host_name_value' data/firemotd-data-host.json)
echo "${result}" > data/firemotd-data-host.json
result=$(jq --arg host_name_lastrun "$host_name_lastrun" '.host.properties.name.lastrun = $host_name_lastrun' data/firemotd-data-host.json)
echo "${result}" > data/firemotd-data-host.json
}
explore_host_name
jsonファイル:
{
"host": {
"properties": {
"name": {
"generated": "@logon",
"value": "${host.name}",
"lastrun": "2020-06-09 20:48:00,357",
"type": "keyword"
}
}
}
}
理想的には、更新するhost.properties.name.lastrun
とhost.properties.name.value
同時に更新したいと思います。
これは役立つかもしれません:
jq --arg hpnl foo --arg hpnv bar '.host.properties.name.lastrun = $hpnl | .host.properties.name.value = $hpnv' file
出力:
{ "host":{ "properties":{ "name":{ "generate": "@logon"、 "value": "bar"、 "lastrun": "foo"、 "type": "keyword" } } } }
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加