私のホストで次のように入力すると、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": "master", "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": "master", "scheme": "mysql", "port": 3306}]}
多くのホストと同様に、私のホストも読み取り専用ファイルシステムを提供していることを指摘する価値があります。
答え1
cat file.json | json_pp #perl utility
cat file.json | jq .
ジャックちょうどきれいな印刷よりも多くがあります。
答え2
パイプで接続しますyaml
(これはrummel.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によって保証されておらず、読み取ったときに順序を保持するこのruamel.json
ようなパッケージがないため保証されません。ruamel.yaml
json
上記の仕組みは、YAMLがJSONの親セットですが、より読みやすい表示モードを提供することです(必ずしも必要でない場合は、引用符を省略してインデントされたブロック構造を形成します)。
答え3
いいですね。出力は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です。
答え4
次のnpmjsパッケージはこれを行います。https://www.npmjs.com/package/js-beautify
あなたはそれをインストールすることができます
npm -g install js-beautify
世界中でDebianパッケージを上書きするのは悪い習慣です。独自のグローバルまたはローカルパッケージセットを作成し、そこでツールを使用する方が良いでしょう。
これにはnodejsが必要です。