转换大型 JSON 文件格式

转换大型 JSON 文件格式

我想知道是否可以转换以下格式

{"timestamp":"1579053433","name":"1.10.207.64","value":"node-fnk.pool-1-10.dynamic.totinternet.net","type":"ptr"}
{"timestamp":"1579067130","name":"1.10.207.65","value":"node-fnl.pool-1-10.dynamic.totinternet.net","type":"ptr"}
{"timestamp":"1579098581","name":"1.10.207.66","value":"node-fnm.pool-1-10.dynamic.totinternet.net","type":"ptr"}

并最终得到

1.10.207.64-1.10.207.64::node-fnk.pool-1-10.dynamic.totinternet.net;
1.10.207.65-1.10.207.65::node-fnl.pool-1-10.dynamic.totinternet.net;
1.10.207.66-1.10.207.66::node-fnm.pool-1-10.dynamic.totinternet.net;

JSON 文件大小为 127 GB,共有 1,267,984,961 行。每行中唯一会改变的是 IP 和主机名。

答案1

您可以尝试jq- 例如,使用\(...)字符串插值

jq -r '"\(.name)-\(.name)::\(.value);"' file.json

据我所知,它不会尝试读取整个文件,除非您明确告诉它(使用-s/--slurp选项),所以虽然它可能是慢的,无论文件有多大,它都不应该被阻塞。

答案2

正如ctrl-alt-delor评论,python是一个选项

例如,使用相对较新的python3版本

import sys, json

for line in sys.stdin:
    doc = json.loads(line)
    print(f'{doc["name"]}-{doc["name"]}::{doc["value"]}')

您可以将其放入文件中(例如parse_json.py)并按如下方式运行:

python3 parse_json.py <json.file

相关内容