如何用Linux/Mac命令将多个多行JSON文件合并为单个NDJSON文件?
如何用Linux/Mac命令将多个多行JSON文件合并为单个NDJSON文件?
当然有,以下是几种实用的命令行方法,适用于Linux和Mac环境:
方法1:使用jq(推荐,专业处理JSON)
jq是专门的JSON处理工具,大部分Linux发行版自带,Mac可通过Homebrew安装(brew install jq)。执行以下命令即可完成转换合并:
jq -c '.' *.json > items.json
-c参数:将多行JSON压缩为单行紧凑格式*.json:匹配当前目录下所有JSON文件(可替换为具体文件名,比如item1.json item2.json)> items.json:将结果输出到目标NDJSON文件
方法2:使用Python(无需额外安装工具)
系统自带的Python就能完成这个任务,执行如下命令:
python -c "import json, sys; [print(json.dumps(json.load(f))) for f in sys.argv[1:]]" *.json > items.json
脚本逻辑:逐个读取传入的JSON文件,解析为JSON对象后再转成单行字符串输出,最终合并到目标文件。
方法3:使用awk(适合结构简单的JSON)
如果你的JSON结构简单(无含换行的字符串值等),可以用awk快速处理:
awk 'NF {printf "%s", $0} ENDFILE {print ""}' *.json > items.json
NF {printf "%s", $0}:跳过空行,将每行内容拼接成单行ENDFILE {print ""}:每个文件处理完后添加换行,保证每个JSON对象占一行
示例输入
item1.json:
{ "type": "Feature", "version": "1.0.0", "id": "item1" }
item2.json:
{ "type": "Feature", "version": "1.0.0", "id": "item2" }
执行命令后得到的items.json
{"type": "Feature", "version": "1.0.0", "id": "item1"} {"type": "Feature", "version": "1.0.0", "id": "item2"}
内容的提问来源于stack exchange,提问作者Nikko
相关产品推荐
相关产品推荐

