You need to enable JavaScript to run this app. Linux下低内存删除超大csv开头冗余字符提取末尾json的方案
优惠活动
大模型
产品
解决方案
定价
更多

Linux下低内存删除超大csv开头冗余字符提取末尾json的方案

50GB规模单行CSV低内存操作与JSON提取适配方案

文件头部冗余内容裁剪(仅操作头段,不触发全量加载)

  • 优先避开vim、nano、gedit这类常规文本编辑器:这类工具即使跳转到指定偏移位置,也会触发全文件扫描生成交换临时文件,50GB规模的文件很容易直接占满磁盘空间,完全不适用
  • 已知开头冗余长度的场景,直接使用系统原生dd工具完成截断:该工具以固定块为单位读写文件流,全程内存占用仅为单块大小,完全不会触碰后续存储的几十GB内容。操作示例:如果测算出开头冗余内容共1MB,执行以下命令即可跳过冗余段,将剩余内容写入新文件
    dd if=你的超大文件.csv of=裁剪完成.csv bs=1M skip=1 status=progress
  • 不确定冗余位置、需要查看前2-3MB内容定位截断点的场景,可使用hexedit这个按偏移范围加载的十六进制编辑器:启动时指定仅加载从文件头开始的3MB区域,全程不会读取后续的文件内容,可直接在该区域修改、删除冗余文本后保存,改动仅写入对应磁盘块,不触发全文件读写

低内存提取最后一列存储的JSON内容

所有操作均基于流处理逻辑,全程内存占用可控制在10MB以内,不会出现全量文件加载的问题:

  • 如果你的CSV采用双引号包裹字段的标准格式,最后一列的JSON整体被引号包裹、内部内容经过转义不会和CSV字段分隔符","产生冲突,可直接用流处理工具awk完成字段提取:
    awk 'BEGIN{FS="\",\""} {print $NF}' 裁剪完成.csv > 提取得到的.json
    由于原文件为单行结构,awk会按固定块大小逐段读取输入流,匹配到分隔符时切割字段,全程仅保留当前读写块的内容,不会把整行50GB的数据全部加载到内存中
  • 如果分隔符可能和JSON内部内容冲突,可先用grep -abo定位最后一个合法CSV字段分隔符的字节偏移量,再结合之前提到的dd工具,从该偏移位置开始读取后续所有内容写入JSON文件;后续可用流处理类的sed命令去掉文件首尾残留的CSV包裹引号,全程没有全量加载的内存开销

实操提示:所有命令的读写块大小可根据磁盘性能灵活调整,即使设置10MB的读写块,内存占用也远低于常规编辑器的基础运行开销,完全适配50GB级大文件的操作需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.13 08:18:04