故乡的云。上古的玉。随手的诗。十九岁的你。 收藏本站
登陆 / 注册 搜索

阅读: 90   回复: 1

[# Linux] Linux 查看、修改超大文本文件(分割)

[复制链接]
小执念 古黑浩劫论坛大牛 2022-6-2 14:30 |显示全部楼层

可遇不可求的事:故乡的云,上古的玉,随手的诗,十九岁的你。

管理员 五周年纪念
最近要查看和修改一个超大的文本文件,单个文件体积已经高达 17.9GB

Linux 查看、修改超大文本文件(分割) 1.jpg

这种超大的文本文件在 window系统下,普通人的电脑想要打开和编辑简直无能为力,我自己的电脑配置是 :

CPU:5600X
内存:8G*2
硬盘:三星 970 evo plus

使用软件 EverEdit、Notepa++、Sublime Text,别说17GB了,就连2GB的文件编辑都能卡死几秒钟。。无论window 还是 Linux ,想要正常打开、编辑超大文件,内存都必须充足,因为内存的速度比硬盘快了几十倍,内存和固态硬盘速度对比:

Linux 查看、修改超大文本文件(分割) 2.jpg
Linux 查看、修改超大文本文件(分割) 3.jpg

当文件过大时,并且内存不够充足的时候,Linux中使用vim、cat、awk等工具编辑大文件将会成为梦魇,具体表现在:

执行速度缓慢,文件内容需要加载到内存中,涉及大量的磁盘读;
耗费资源过多,一个 2GB 的文件需要至少 2GB 的内存,更大的呢?
文件传输困难,大文件需要传输给其他人进行分析,文件太大,全量传输带宽耗费大。

如何破局?

Linux提供了一个简单易用的 split 工具,可以实现将文件切割成多个小文件。split 提供两种方式对文件进行切割:

1.根据行数切割,通过-l参数指定需要切割的行数
2.根据大小切割,通过-b参数指定需要切割的大小

这里我采用根据行数切割,因为按大小切割可能会出现断行。

  1. split -l 7500000 -d -a 3 sf.sql sp
复制代码


上面命令的意思是,按 7500000 行,把 sf.sql  分割,分割后的文件名称用 sp + 3 个数字来命名,从 sp000 开始(下图的 sp000 被我移走了)

Linux 查看、修改超大文本文件(分割) 4.jpg


17.9GB 的文件切割后,每个文件大小为 1.5GB 左右,此时再对文件进行编辑将会方便很多,如果你想把文件再分割得小一些,那么就要减少分割的行数,同时文件数量也会很多。

多文件合并

split 是用户将大文件切割为多个小文件,如果需要将多个小文件合并为一个文件怎么处理呢?可以使用文件重定向方式实现
  1. cat sp001 sp002 > spall
复制代码


Linux 查看、修改超大文本文件(分割) 5.jpg


合并方式通过读取文件的方式+输出重定向,对于大文件一样会存在性能的问题,建议根据需要使用。

修改下一篇再讲。

Linux 查看、修改超大文本文件(编辑) - 古黑论 (guhei.net)
上一篇
下一篇
帖子热度 100 ℃

东风谷沛柳 「初入古黑」 2022-6-2 14:30 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

我想说我什么也不想说、
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

快速回复 返回列表