シェルでAPI GatewayのOpenAPI(Yaml or JSON)からAWSのベンダープレフィックスを削除する方法

シェルでAPI GatewayのOpenAPI(Yaml or JSON)からAWSのベンダープレフィックスを削除する方法

x-amazonで始まるプロパティを一括削除したい時に、node.jsのjs-yamlを使ってプログラム作成するかとか悩んだのですが、Linuxのjq,yqコマンドを使用してシェルで削除することができました。

jqコマンドは意外と奥が深いのでハマります。

以下参考サイトです。

https://stackoverflow.com/questions/52184815/jq-how-can-i-remove-keys-based-on-regex

x-amazonで始まるベンダープレフィックスを削除するには、pathsdelpathsstartswithを使います。

ここでややこしいのは、x-amazonで始まるベンダープレフィックスは深い階層だったり、一番上の階層だったりという点です。

そこでpathsを使用します。

startswithはその文字列で始まるプロパティを取得します。

select(.[-1]~)とすることによってx-amazonで始まるベンダープレフィックスが配列の一番最後に来る配列のみを取得することができます。

select(.[]~)とすると、全部表示されてしまいますので、-1をつけます。

この結果をdelpathsに渡します。

これで、ベンダープレフィックスのkey-valueが削除されたoutput.yamlが作成されます。

Yaml ⇔ JSON変換

yqコマンドでyamlからjsonに変換するには

とタイプします。

jsonからyamlに変換するには

とします。

公式サイト:https://stedolan.github.io/jq/manual/

スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA