{
"auth": 'log',
"appid": 21,
"custid": "599c1f910f53ada8468b4567",
"hwid": "59e719ba0f53adfd6a8b4597"
}
24/10/2017 12:44:24
--------------------------------------------------------------------------------
{
"auth": 'log',
"appid": 21,
"custid": "599c1f910f53ada8468b4567",
"hwid": "59e719ba0f53adfd6a8b4597"
}
ファイルの一部のログ行で区切られたjsonのリストを単一のjsonに変換する必要があります。これまで私はこれを試しました:
tac tst.txt | sed '/---------/I,+2 d' | tac > out.json
ログ行を削除しましたが、カンマで置き換えてリストに追加する必要があります。どうすればいいですか?それともPythonを使用する代替方法はありますか?
ベストアンサー1
sed
+jq
解決策:
sed -E "/^(---|[0-9][0-9])/d; s/'([^']+)'/\"\1\"/" tst.txt | jq -s '' out.json
/^(---|[0-9][0-9])/d
---
- または2桁で始まる不要な行を削除します。s/'([^']+)'/\"\1\"/"
- 一重引用符で囲まれた値を有効なJSON値で置き換えます(二重引用符で囲みます)。jq -s ''
- 入力内のすべてのJSONオブジェクトに対してフィルタを実行するのではなく、入力ストリーム全体を1つの大きな配列に読み込みます。
コンテンツout.json
:
[
{
"auth": "log",
"appid": 21,
"custid": "599c1f910f53ada8468b4567",
"hwid": "59e719ba0f53adfd6a8b4597"
},
{
"auth": "log",
"appid": 21,
"custid": "599c1f910f53ada8468b4567",
"hwid": "59e719ba0f53adfd6a8b4597"
}
]