質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Q&A

解決済

1回答

4528閲覧

jqコマンドで、一部のvalueのみを変更する方法

noz_awsinf_sp

総合スコア62

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

0グッド

1クリップ

投稿2019/05/17 06:31

下記のようなjsonがあり、jqコマンドを使って加工を行おうと思っています。
条件はSidが"a"の"AWS"の配列内の<account>を変数$accountidで置き換えたいです。
どのようにjqコマンドを組み合わせればできそうでしょうか。

$accountid='12345678' $cat test.json | jq . --arg accountid .Statement[] | select(.Sid == a) | .Principal.AWS |= ___置換方法___
[置換前のjson] { "Version": "2012-10-17", "Statement": [ { "Sid": "a", "Effect": "Allow", "Principal": { "AWS": [ "ssm.amazonaws.com", "sns.amazonaws.com", "ec2.<account>.com" ] }, "Action": "sts:AssumeRole" }, { "Sid": "b", "Effect": "Allow", "Principal": { "AWS": [ "ssm.amazonaws.com", "sns.amazonaws.com", "ec2.<account>.com" ] }, "Action": "sts:AssumeRole" } ] }
[置換後のイメージ] { "Version": "2012-10-17", "Statement": [ { "Sid": "a", "Effect": "Allow", "Principal": { "AWS": [ "ssm.amazonaws.com", "sns.amazonaws.com", "ec2.12345678.com" ] }, "Action": "sts:AssumeRole" }, { "Sid": "b", "Effect": "Allow", "Principal": { "AWS": [ "ssm.amazonaws.com", "sns.amazonaws.com", "ec2.<account>.com" ] }, "Action": "sts:AssumeRole" } ] }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こういった御話でしょうか?

bash

1$ jq --arg accountid 12345678 '(.Statement[] | select(.Sid == "a").Principal.AWS[]) |= sub("<account>"; $accountid)' test.json

シェルのメタキャラクタも含まれるので、 jq の filter 全体はシングルクォートで囲う ことと、それから |= (update assignment) 演算子左辺フィルタ全体を括弧で囲み、出力結果自体はフィルタしない こと、あたりがポイントかと思われます。

投稿2019/05/17 07:31

argparse

総合スコア1017

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問