删除某个目录下所有文件中的所有空行的最简单方法-sed
删除某个目录下所有文件中的所有空行
1 目标
本文是为了给大家提供一个“删除某个目录下所有文件中的所有空行”的最简单的方法,没有之一。
2 背景
这次到背景出差,临时需要将Oracle数据库中的数据导出为文本文件,然后导入到人大金仓数据库。导出时一切顺利,导入时发现无法导入,原因是我导出的文件中有空行,因为Oracle导出时是分批导出的,每批导出2000行,每批之间有一个空行。
那么,我就需要删除导出的文件中的所有的空格。
3 解决方案
如果是一个文件,那也简单,只要 vim 打开文件,然后输入 :%s/^\n//g
,进行全局替换,就能去掉所有的空行。
但是当时的需求是Oracle导出了几十个表的数据,也就是说,我要删除掉几十个文档中的空行。如果一个个文档去处理,工作量有点大,而且可能处理错误,或漏掉某个文档。
此时sed 这个神器该闪亮登场了!
首先打开linux终端,进入到存放导出文件的目录中,然后执行命令 sed -i '/^\s*$/d' *
,一下子就处理好了,而且执行效率贼高,当时很多文件都是几十万行,几百万行,几分钟就处理好了。
该命令意思是匹配并处理当前目录下的所有文件,^\s*$
表示用正则表达式匹配每个文件中的空行, d
表示删除匹配到的行, 前面的 -i
参数,表示直接操作文件,即直接修改文件本身,如果不加参数 -i
,则只会将去掉空行后的文件内容直接打印到屏幕上,而不会修改文件本身。
4 扩展
- sed命令真的很厉害,不仅仅可以删掉空行,也可以删除任意正则表达式匹配的行,当然,它还有其他很多牛逼的功能,这里就不再扩展了。
- 当然,也要注意到,sed直接操作文件的时候,一定要谨慎,一不小心就把重要内容删除了,找都找不回来,所以我们执行该命令前一定要做好备份,同时先进行测试看是否达到了预期效果。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现