私のホストでは、次のように入力します。これにより、CLIでは読みにくい一連の情報が返されます。
echo $ENV_VAR | base64 --decode
それをフォーマットする方法はありますか?
これはコマンドの出力例です。
{"something":[{"path": "something"、 "Host": "something.internal"、 "scheme": "solr"、 "port":8080、 "ip": "123.4.567.89"}] 、 "second_database":[{"username": "user"、 "password": ""、 "ip": "123.4.567.89"、 "Host": "second_database.internal"、 "query":{"is_master" :true}、 "path": "main"、 "scheme": "mysql"、 "port":3306}]、 "redis":[{"ip": "123.4.567.89"、 "Host": "redis "、" scheme ":" redis "、" port ":6379}]、" database ":[{" username ":" user "、" password ":" "、" ip ":" 123.4.567.89 "、" Host ":" database.internal "、" query ":{" is_master ":true}、" path ":" main "、" scheme ":" mysql "、" port ":3306}]}
私のホストは、多くの場合と同様に、読み取り専用のファイルシステムを提供していることを指摘する価値があるでしょう。
cat file.json | json_pp #Perl utility
cat file.json | jq .
jq きれいに印刷できる能力以上のものが詰まっています。
私はそれをyaml
にパイプします(これは ruamel.yaml の一部ですが、私はその著者です):
echo $ENV_VAR | base64 --decode | yaml from-json -
これは(あなたの出力例に基づいて)あなたに与えます:
second_database:
- username: user
password: ''
ip: 123.4.567.89
Host: second_database.internal
path: main
query:
is_master: true
scheme: mysql
port: 3306
redis:
- ip: 123.4.567.89
Host: redis
scheme: redis
port: 6379
something:
- path: something
Host: something.internal
scheme: solr
port: 8080
ip: 123.4.567.89
database:
- username: user
password: ''
ip: 123.4.567.89
Host: database.internal
path: main
query:
is_master: true
scheme: mysql
port: 3306
キーの順序は保証されていません。jsonでは保証されておらず、json
で読み取るときに順序を保持するruamel.json
のようなruamel.yaml
パッケージがないためです。
上記は、YAMLがJSONのスーパーセットであるという原則に基づいて機能しますが、より読みやすい表示モードがあります(絶対に必要でない場合は引用符を省略し、インデントされたブロック構造にします)。
OK、その出力はJSONです。 JSONとして解析する:
#!/usr/bin/Perl;
use strict;
use warnings;
use JSON;
local $/;
print to_json ( decode_json ( <> ), {pretty => 1 });
次のように印刷します。
{
"something" : [
{
"Host" : "something.internal",
"scheme" : "solr",
"ip" : "123.4.567.89",
"path" : "something",
"port" : 8080
}
],
"second_database" : [
{
"path" : "main",
"ip" : "123.4.567.89",
"query" : {
"is_master" : true
},
"Host" : "second_database.internal",
"port" : 3306,
"password" : "",
"scheme" : "mysql",
"username" : "user"
}
],
"redis" : [
{
"scheme" : "redis",
"ip" : "123.4.567.89",
"port" : 6379,
"Host" : "redis"
}
],
"database" : [
{
"username" : "user",
"password" : "",
"scheme" : "mysql",
"port" : 3306,
"Host" : "database.internal",
"ip" : "123.4.567.89",
"query" : {
"is_master" : true
},
"path" : "main"
}
]
}
フォーマット済み、ボーナスポイント-まだJSON。
echo $ENV_VAR | base64 --decode | json_reformat
をお試しください。これが6.x以降のCentosバージョンである場合は、
次のnpmjsパッケージがタスクを実行します: https://www.npmjs.com/package/js-beautify
あなたはそれをインストールすることができます
npm -g install js-beautify
グローバルに、ただしdebianパッケージを上書きするのは基本的な練習です。独自のグローバルパッケージセットまたはローカルパッケージセットを作成し、そこからツールを使用する方がよいでしょう。
そのためにはnodejsが必要です。