需求
最近在整flink, 官方提供数据源插件json类型是jsonl,而原始alios上存的json类型.
考虑到服务器通常是linux,就用sed写了一个转换工具,尽可能的减少依赖
作用
将单行的超长json
字符串文件,通过sed
脚本转换为 jsonLines
json2lines
#!/bin/bash
###
# @Author: zc
# @Date: 2022-12-30 12:19:56
# @LastEditors: zc
# @LastEditTime: 2022-12-30 12:27:52
# @FilePath: \flink-examples\flink-examples-table\json\json2lines.sh
# @Description:
###
# json
jsonFile=AdWatch
cat $jsonFile | sed '1s/^\[//; $s/\]$/\n/' | sed -E ':lable;s/\},\{/\}\n\{/;tlable' > $jsonFile.jsonl
lines2json
sed '1s/^/[/; $!s/$/,/; $s/$/]/' in.jsonl > out.json
说明
1s/^/[/ # 在第一行的开头插入一个左括号
$!s/$/,/ # 除了最后一行之外的所有地方都附加一个逗号
$s/$/]/ # 在最后一行附加一个右括号
其它
python 有自己专门的库
pip install jsonlines