jq -r '.[] | to_entries | map("\(.key):\(.value)") | join("\t")'
Tags がないとき用に .Tags[]?
にしておく
aws ec2 describe-instances | jq -r '.Reservations[].Instances[].Tags[]? | select(.Value | test("regexp pattern"; "i")).PrivateIpAddress'
$ echo "[]" | jq --argjson foo '["a", "b", "c"]' --argjson bar '["c"]' '$foo - $bar'
[
"a",
"b"
]
$ (echo '{"foo":"bar"}'; echo '{"bar":"foo"}';) | jq . -c
{"foo":"bar"}
{"bar":"foo"}
$ (echo '{"foo":"bar"}'; echo '{"bar":"foo"}';) | jq -s .
[
{
"foo": "bar"
},
{
"bar": "foo"
}
]
$ echo -e '{"foo":"foobar"}\n{"foo":"foobaz"}' | jq '. | select(.foo | contains("baz"))'
{
"foo": "foobaz"
}
$ echo '{ "foo": { "foo-bar":"baz" } }' | jq -r '.foo["foo-bar"]'
baz
|=
を使う
$ echo '{"foo": "bar"}' | jq '.foo |= "baz"'
{
"foo": "baz"
}
jq 1.5 以上?
$ echo '{"foo": "foobar"}' | jq '.foo |= gsub("bar";"baz")'
{
"foo": "foobaz"
}
# キーあり (キーがあったら .foo の値を書き換える)
$ echo '{"foo":"bar"}' | jq '. | select(.foo != null) | .foo |= "baz"'
{
"foo": "baz"
}
# キーなし
$ echo '{"foo":"bar"}' | jq '. | select(.foobar != null) | .foo |= "baz"'
# キーあり、キーがあるので何もしない
$ echo '{"foo":"bar"}' | jq '.foo //= "hoge"'
{
"foo": "bar"
}
# キーなし
$ echo '{"foo":"bar"}' | jq '.bar //= "foo"'
{
"foo": "bar",
"bar": "foo"
}