コマンドラインからRubyを用いた JSON, YAML, XML の整形 および JSON <-> YAMLの変換の例

1pt   2018-11-09 10:39
IT技術情報局

コマンドラインからRubyを用いた JSON, YAML, XML の整形 および JSON <-> YAMLの変換の例を示す。

Ruby環境 $ ruby -v ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin15] $ which ruby /opt/chefdk/embedded/bin/ruby

MAC OS 10.13.6 に Chef Development Kit Version: 3.3.23 を導入し echo ‘eval “$(chef shell-init bash)”‘ >> ~/.bash_profile としている環境
Install ChefDK
Configuring ChefDK: configure-ruby-environment

JSONの整形
  • ruby -e “require ‘json’; puts JSON.pretty_generate(JSON.load(STDIN.read))”
$ echo '{ "foo": { "bar":0, "baz":1 }, "qux": { "quux":2, "corge":3 } }' | ruby -e "require 'json'; puts JSON.pretty_generate(JSON.load(STDIN.read))" { "foo": { "bar": 0, "baz": 1 }, "qux": { "quux": 2, "corge": 3 } } YAMLの整形
  • ruby -e “require ‘yaml’; puts YAML.dump_stream(YAML.load(STDIN.read))”
$ echo " --- foo: bar: 0 baz: 1 qux: quux: 2 corge: 3 " | ruby -e "require 'yaml'; puts YAML.dump_stream(YAML.load(STDIN.read))" --- foo: bar: 0 baz: 1 qux: quux: 2 corge: 3 JSON -> YAML の変換

組み合わせ1

  • ruby -e “require ‘json’; require ‘yaml’; puts YAML.dump_stream(JSON.load(STDIN.read))”
$ echo '{ "foo": { "bar":0, "baz":1 }, "qux": { "quux":2, "corge":3 } }' | ruby -e "require 'json'; require 'yaml'; puts YAML.dump_stream(JSON.load(STDIN.read))" --- foo: bar: 0 baz: 1 qux: quux: 2 corge: 3 YAML -> JSON の変換

組み合わせ2

  • ruby -e “require ‘json’; require ‘yaml’; puts JSON.pretty_generate(YAML.load(STDIN.read))”
$ echo " --- foo: bar: 0 baz: 1 qux: quux: 2 corge: 3 " | ruby -e "require 'json'; require 'yaml'; puts JSON.pretty_generate(YAML.load(STDIN.read))" { "foo": { "bar": 0, "baz": 1 }, "qux": { "quux": 2, "corge": 3 } } XMLの整形
  • ruby -e “require ‘nokogiri’; puts Nokogiri::XML(STDIN.read, &:noblanks).to_xml”
$ echo '<?xml version="1.1" encoding="UTF-8"?> <foo> <bar>val</bar> </foo>' | ruby -e "require 'nokogiri'; puts Nokogiri::XML(STDIN.read, &:noblanks).to_xml" <?xml version="1.1" encoding="UTF-8"?> <foo> <bar>val</bar> </foo>

Source: ruby tag

   ITアンテナトップページへ
情報処理/ITの話題が沢山。