大容量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

関連情報