.txt ファイルデータをjson形式に変換する

.txt ファイルデータをjson形式に変換する

次のデータを含むログファイルがあり、user.txtそれをjson形式に変換したいと思います。

{"user":"Demo Admin","user_id":"57c4718434243dc47d8b456c","org_id":"57c4718434243dc47d8b456b","superuser_id":null,"superuser_name":null,"application":"Trackier Webapp","method":"GET","ip":"43.249.54.66","domain":"demo.trackier.com","url":"https:\/\/demo.trackier.com\/admin.html","created":"2022-09-08 06:19:18","@timestamp":"2022-09-08T06:19:18Z"}
{"user":"Demo Admin","user_id":"57c4718434243dc47d8b456c","org_id":"57c4718434243dc47d8b456b","superuser_id":null,"superuser_name":null,"application":"Trackier Webapp","method":"GET","ip":"43.249.54.66","domain":"demo.trackier.com","url":"https:\/\/demo.trackier.com\/admin.html","created":"2022-09-08 06:19:35","@timestamp":"2022-09-08T06:19:35Z"}

答え1

1行に1つのjsonを持つファイルをjson配列に変換すると仮定すると、次のようになります。

sed '1s/^/[/;$s/$/]/;$!s/$/,/' < file.multijson > file.json

[最初の行の先頭、]最後の行の終わり、,最後の行を除くすべての部分の終わりに挿入されます。

存在する場合は、jq次のこともできます。

jq -s < file.multijson > file.json

(単純な形式のために追加されました-c)しかし、数字(例えば1e1または10.0000000000000001を10に変更)または文字列(例えば"\u00e9"に変更"é")の形式を再指定することができます。

関連情報