sed を使用して },{"Foo" を }\n{"Foo" に変更するには?

sed を使用して },{"Foo" を }\n{"Foo" に変更するには?

私は},{1行に1つのオブジェクトを持ち、カンマを削除したいと思います。一方では、エディタを使用してファイルを表示できるようにしたいと思いますが、ほとんどのエディタは55MBのラインファイルが好きではありません。次のsedコマンドを使用しましたが、長さ0のファイルを作成しました。私が望む結果をどのように取得できますか?

cat INPUT | sed -n 's/},{"Foo"/}\n{"Foo"/g' > OUTPUT

答え1

sed 記号は-n静かさを意味します。これにより、自動行印刷が無効になり、コマンドを使用して明示的に行を印刷する必要がありますp

次のようにまたはなしでコマンドを使用します-np

sed 's/},{"Foo"/}\n{"Foo"/g' file >output

または:

sed -n 's/},{"Foo"/}\n{"Foo"/gp' file >output

答え2

オブジェクトがコンマで区切られているので、配列にあるとします。

配列にあり、その配列が次の最上位配列である場合

[{"Foo":"first"},{"Foo":"second"},{"Foo":"third"}]

...それからあなたは利用できますJSONプロセッサjq外部配列を次のように別々のオブジェクトセットに展開します。

jq -c '.[]' file

前の例の入力に基づいて、次の一連の JSON オブジェクトが生成されます。

{"Foo":"first"}
{"Foo":"second"}
{"Foo":"third"}

これは文書の構造を変更するので、次のようなものを使用できます。jtcjq基本的に同様にドキュメントを見やすく印刷できますが、各構造の最低レベルをコンパクトな形式でレンダリングする別のJSONプロセッサです。

$ jtc -tc file
[
   { "Foo": "first" },
   { "Foo": "second" },
   { "Foo": "third" }
]

主にこの文書を視覚的に閲覧したいと思うので、次にも興味があります。jless便利、これは「JSONブラウザ」です。文書の構造と(対話的に)縮小可能なサブ構造が表示されます。

▽ [{…}, {…}, {…}]
  ▽ [0]: {Foo: "first"}
      Foo: "first"
  ▽ [1]: {Foo: "second"}
      Foo: "second"
  ▽ [2]: {Foo: "third"}
      Foo: "third"

関連情報