各行からJSONデータの一部を削除するコマンドは何ですか?

各行からJSONデータの一部を削除するコマンドは何ですか?

test.json行の長さが異なるファイルがあります。いくつかの仮想例:

{ a: 123, b: sd, c: x45, d: 1, e: '' }
{ a: 5, b: bfgg, c: x4c, d: 31, e: '' }

d- 部分の後ろの部分文字列全体を切り取り、各行ごとにその文字列だけを返したいと思います。

{ a: 123, b: sd, c: x45 }
{ a: 5, b: bfgg, c: x4c }

私が見つけたここ同様の質問に私の質問を適用しようとしています。

echo test.json |  sed 's/. d:/' > newtest.json

1行ではなくファイル全体に対してこれを行う必要があります。

ベストアンサー1

コマンドラインでjson変換をたくさん実行する場合は、jqツールを入手して使い方を学ぶことは時間を費やす価値があります。

http://stedolan.github.io/jq/

上記の答えは、実際にはjsonを解析せずに最小限の変換を行うことができることを示唆していますが、最終的に正規表現で欠陥のあるjsonパーサーを再作成するか、選択したパーサーの言語でデフォルトのjsonを使用するように戻します。

jqは迅速で使いやすいので、ツールボックスに収納できる非常に便利なツールです。

BWT、テストデータが間違ったjsonなので、上記の解決策は複雑になります。それを修正すると

{ "a":123 , "b": "sd", "c": "x45", "d": 1, "e": "" }
{ "a":5 , "b": "bfgg", "c": "x4c", "d": 31, "e": "" }

これにより、このjqコマンドは要件を満たします。

 jq -c '{a,b,c}' test.json

{"a":123,"b":"sd","c":"x45"}
{"a":5,"b":"bfgg","c":"x4c"}

おすすめ記事