Sed
如何用“sed”替換多行並轉換為 JSON?
{ "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 有什麼替代方法?
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 對象執行過濾器,而是將整個輸入流讀入一個大數組內容
out.json
:[ { "auth": "log", "appid": 21, "custid": "599c1f910f53ada8468b4567", "hwid": "59e719ba0f53adfd6a8b4597" }, { "auth": "log", "appid": 21, "custid": "599c1f910f53ada8468b4567", "hwid": "59e719ba0f53adfd6a8b4597" } ]