どーも、シローです。
今回はyq
というコマンドを使って、YAML形式のファイルをJSON形式に変換したり、その逆も行えるということを紹介します。
yqコマンドとは
yq
コマンドはjq
コマンドのラッパーコマンドであり、YAMLとJSONの相互変換を行います。
過去にjq
コマンドを使った記事 => (https://shiro-secret-base.com/?p=712)
参考記事 => (https://dev.classmethod.jp/articles/yq/) ありがとうございます。
インストール方法
MacOSの場合
1 |
$ brew install yq |
Ubuntuの場合
1 2 3 |
$ apt-get update $ apt-get install jq python3 python3-pip python3-setuptools $ pip3 --no-cache-dir install yq |
使用方法
YAML => JSONへの変換
以下のymlファイルをJSON形式にする
Chat.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
TableName: Chat AttributeDefinitions: - AttributeName: commentId AttributeType: S - AttributeName: roomSlug AttributeType: S KeySchema: - AttributeName: commentId KeyType: HASH - AttributeName: roomSlug KeyType: RANGE ProvisionedThroughput: ReadCapacityUnits: 5 WriteCapacityUnits: 5 |
1 |
$ yq . Chat.yml > output.json |
出力はこちら
output.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
{ "TableName": "Chat", "AttributeDefinitions": [ { "AttributeName": "commentId", "AttributeType": "S" }, { "AttributeName": "roomSlug", "AttributeType": "S" } ], "KeySchema": [ { "AttributeName": "commentId", "KeyType": "HASH" }, { "AttributeName": "roomSlug", "KeyType": "RANGE" } ], "ProvisionedThroughput": { "ReadCapacityUnits": 5, "WriteCapacityUnits": 5 } } |
JSON => YAMLへの変換
出力したoutput.jsonをYAML形式に変換します。
1 |
$ yq -y . output.json |
出力
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
TableName: Chat AttributeDefinitions: - AttributeName: commentId AttributeType: S - AttributeName: roomSlug AttributeType: S KeySchema: - AttributeName: commentId KeyType: HASH - AttributeName: roomSlug KeyType: RANGE ProvisionedThroughput: ReadCapacityUnits: 5 WriteCapacityUnits: 5 |
使い所
僕が最近このコマンドを使っている箇所といえば、CloudFormationのDynamoDBの設計をYAML形式で記述して、
dynamodbのテーブルを作成するときに、このYAMLの記述をJSONに変換したものを扱えるため
そこの変換で使っているかなという感じです。
まとめ
yq
コマンドでYAMLとJSONの変換ができる- aws-cliを使っている過程でお世話になるかも
新しいシェルプログラミングの教科書
システム管理やソフトウェア開発など、
実際の業務では欠かせないシェルスクリプトの知識を徹底解説ほとんどのディストリビューションでデフォルトとなっているbashに特化することで、
類書と差別化を図るとともに、より実践的なプログラミングを紹介します。
またプログラミング手法の理解に欠かせないLinuxの仕組みについてもできるかぎり解説しました。
イマドキのエンジニア必携の一冊。
システム管理やソフトウェア開発など、
実際の業務では欠かせないシェルスクリプトの知識を徹底解説ほとんどのディストリビューションでデフォルトとなっているbashに特化することで、
類書と差別化を図るとともに、より実践的なプログラミングを紹介します。
またプログラミング手法の理解に欠かせないLinuxの仕組みについてもできるかぎり解説しました。
イマドキのエンジニア必携の一冊。