내 호스트에서 다음을 입력하면 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
전 세계적으로 데비안 패키지를 덮어쓰는 것은 나쁜 습관입니다. 자신만의 글로벌 또는 로컬 패키지 세트를 만들고 거기에서 도구를 사용하면 더욱 좋습니다.
이를 위해서는 nodejs가 필요합니다.