私はjq
を使用してJSON
を改革しています。
JSON文字列:
{"channel": "youtube", "profile_type": "video", "member_key": "hello"}
必要な出力:
{"channel" : "profile_type.youtube"}
私のコマンド:
echo '{"channel": "youtube", "profile_type": "video", "member_key": "hello"}' | jq -c '. | {channel: .profile_type + "." + .member_key}'
以下のコマンドが文字列を連結することを知っています。ただし、上記と同じロジックでは機能しません。
echo '{"channel": "youtube", "profile_type": "video", "member_key": "hello"}' | jq -c '.profile_type + "." + .member_key'
Jqのみを使用して結果を得るにはどうすればよいですか?
文字列連結コードを括弧で囲みます。
echo '{"channel": "youtube", "profile_type": "video", "member_key": "hello"}' | jq '{channel: (.profile_type + "." + .channel)}'
Jeff として文字列補間を使用するソリューションは次のとおりです。
{channel: "\(.profile_type).\(.member_key)"}
例えば.
$ jq '{channel: "\(.profile_type).\(.member_key)"}' <<EOF
> {"channel": "youtube", "profile_type": "video", "member_key": "hello"}
> EOF
{
"channel": "video.hello"
}
文字列補間は、\(foo)
構文(シェル$(foo)
呼び出しに似ています)で機能します。
公式の JQマニュアル を参照してください。