Есть ли инструмент интерфейса командной строки, который бы уточнял строку JSON

Поле owner_pid в procfs файл status из шоу устройства PCM, какая программа открыла его:

$ grep owner_pid /proc/asound/card*/pcm*/sub*/status
/proc/asound/card2/pcm0p/sub0/status:owner_pid   : 1803
$ ps -p 1803
  PID TTY          TIME CMD
 1803 pts/0    00:00:00 aplay
5
18.06.2015, 16:26
5 ответов
cat file.json | json_pp  #perl utility
cat file.json | jq .    

jq упаковывает гораздо больше, чем просто красивые способности.

13
27.01.2020, 20:32

Хорошо, этот выход - 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.

1
27.01.2020, 20:32

Попробуйте echo $ ENV_VAR | base64 --decode | json_reformat . Если это версия Centos 6.x или выше, она у вас должна быть

1
27.01.2020, 20:32

Я бы вбил это в ямл (который является частью 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, и у меня нет ruamel. json пакет типа ruamel.yaml, который сохраняет порядок при чтении в json.

Вышеуказанное работает по принципу, что YAML является суперсетью JSON, но имеет более читабельные режимы отображения (пропускает котировки, когда в них нет абсолютной необходимости, делая структуру блоков с отступом).

2
27.01.2020, 20:32

Следующий пакет npmjs выполняет эту задачу:https://www.npmjs.com/package/js-beautify

Вы можете установить его с помощью

npm -g install js-beautify

во всем мире, хотя перезапись пакетов debian является плохой практикой. Лучше, если вы создадите свой собственный глобальный или локальный набор пакетов и будете использовать инструмент из него.

Для этого вам понадобится nodejs.

0
27.01.2020, 20:32

Теги

Похожие вопросы