You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用sed/grep -P修复大JSON文件末尾多余的逗号?

处理大JSON文件末尾多余逗号的解决方案

针对3.5GB的大JSON文件,直接用sed全量处理会因内存不足失败,结合你已经定位到的模式"},\n]",推荐以下几种低内存占用的处理方式:

方法一:仅修改文件末尾几行(最直观)

因为问题只出现在文件最后两行,我们可以拆分文件处理,避免加载整个大文件:

  1. 先备份原文件(必须操作,防止数据丢失):
    cp test.json test.json.bak
    
  2. 提取文件除最后2行外的所有内容到临时文件:
    head -n -2 test.json > temp.json
    
  3. 处理最后2行,删除多余的逗号并追加到临时文件:
    tail -n 2 test.json | sed 's/},/}/' >> temp.json
    
  4. 替换原文件:
    mv temp.json test.json
    

方法二:用Perl流式处理(适合不确定末尾行数的情况)

Perl可以逐行读取文件,仅在最后阶段修改目标行,内存占用极低:

perl -i.bak -ne 'if ($prev) { print $prev; } $prev = $_; END { $prev =~ s/},/}/; print $prev; }' test.json

原理:逐行读取时保存上一行内容,到文件末尾时,检查并修改包含多余逗号的行,再完成打印。-i.bak会自动创建原文件的备份。

方法三:GNU Sed流式处理(无需拆分文件)

GNU Sed支持多行匹配的流式处理,不会加载整个文件到内存:

sed -i.bak '$!N; /},\n]$/s/},/}/; P; D' test.json

原理:

  • $!N:除最后一行外,将下一行读入当前模式空间
  • /},\n]$/s/},/}/:匹配到"},\n]"的模式时,删除逗号
  • P; D:打印模式空间的第一行并删除,继续处理剩余内容

内容的提问来源于stack exchange,提问作者user3008410

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 21:30:47