この行で複数のjson値を変更しようとしています
jq '.two="newval", .three="newval"' my.json
これが入力です
{
"one": {
"val": 1
},
"two": "val",
"three": "val",
"four": "val"
}
しかし、出力は2jsonsです。
{
"one": {
"val": 1
},
"two": "newval",
"three": "val",
"four": "val"
}
{
"one": {
"val": 1
},
"two": "val",
"three": "newval",
"four": "val"
}
複数の値を変更して1つのアイテムに出力するにはどうすればよいですか?
+オブジェクトの追加 を使用して複数のメンバーを更新するメソッドを次に示します。
. + {two:"newtwo", three:"newthree"}
サンプル実行(data.json
のデータを想定)
$ jq -M '. + {two:"newtwo", three:"newthree"}' data.json
{
"one": {
"val": 1
},
"two": "newtwo",
"three": "newthree",
"four": "val"
}
カンマをパイプ文字に変更するだけで完了です。
.two="newval" | .three="newval"
「、」はストリームを連結するためのものです:A,B
はAに続いてBを放出します。