我有以下命令搶在UNIX一個JSON:正則表達式與多個管道JSON文件
wget -q -O- https://www.reddit.com/r/NetflixBestOf/.json
哪個(每次顯然有不同的結果)給了我下面的輸出格式:
{
"kind": "...",
"data": {
"modhash": "",
"whitelist_status": "...",
"children": [
e1,
e2,
e3,
...
],
"after": "...",
"before": "..."
}
}
其中陣列的兒童中的每個元素是結構化的作爲對象如下:
{
"kind": "...",
"data": {
...
}
}
這裏是一個前充足完整的上傳.json的get(車身太長,直接發佈: https://pastebin.com/20p4kk3u
我需要打印完整的數據對象數組孩子的每一個元素中的存在。我知道我需要管ATLEAST兩次,最初得到那裏的孩子[...],然後數據{...},這是我到目前爲止有:
wget -q -O- https://www.reddit.com/r/NetflixBestOf/.json | tr -d '\r\n' | grep -oP '"children"\s*:\s*\[\s*\K({.+?})(?=\s*\])' | grep -oP '"data"\s*:\s*\K({.+?})(?=\s*},)'
我是新來的正則表達式,所以我不知道如何處理括號或大括號內的元素我正在grepping。上面的行沒有打印任何東西,我不知道爲什麼。任何幫助表示讚賞。
你開到使用第三方的事業嗎?我通常使用jq二進制來輕鬆解析json數據。根據您的要求,您只需將json數據傳遞給具有內部查詢語言的jq即可:cat/tmp/data | jq'.data.children | 。[]'(這裏/ tmp/data包含完整的json)。通過使用這些實用程序,您實際上可以使用較短的查詢和高級功能(如原始輸出,查詢等)完成工作。 – akskap
那麼,獲取數據的最終目標不是唯一的目標;這一次恰好是一個.json格式,但我想知道如何通過正則表達式來處理任何文件。 –