• 删除某个目录下所有文件中的所有空行的最简单方法sed


    删除某个目录下所有文件中的所有空行

    1 目标

    本文是为了给大家提供一个“删除某个目录下所有文件中的所有空行”的最简单的方法,没有之一。

    2 背景

    这次到背景出差,临时需要将Oracle数据库中的数据导出为文本文件,然后导入到人大金仓数据库。导出时一切顺利,导入时发现无法导入,原因是我导出的文件中有空行,因为Oracle导出时是分批导出的,每批导出2000行,每批之间有一个空行。
    那么,我就需要删除导出的文件中的所有的空格。

    3 解决方案

    如果是一个文件,那也简单,只要 vim 打开文件,然后输入 :%s/^\n//g ,进行全局替换,就能去掉所有的空行。

    但是当时的需求是Oracle导出了几十个表的数据,也就是说,我要删除掉几十个文档中的空行。如果一个个文档去处理,工作量有点大,而且可能处理错误,或漏掉某个文档。
    此时sed 这个神器该闪亮登场了!
    首先打开linux终端,进入到存放导出文件的目录中,然后执行命令 sed -i '/^\s*$/d' * ,一下子就处理好了,而且执行效率贼高,当时很多文件都是几十万行,几百万行,几分钟就处理好了。
    该命令意思是匹配并处理当前目录下的所有文件,^\s*$ 表示用正则表达式匹配每个文件中的空行, d 表示删除匹配到的行, 前面的 -i 参数,表示直接操作文件,即直接修改文件本身,如果不加参数 -i,则只会将去掉空行后的文件内容直接打印到屏幕上,而不会修改文件本身。

    4 扩展

    1. sed命令真的很厉害,不仅仅可以删掉空行,也可以删除任意正则表达式匹配的行,当然,它还有其他很多牛逼的功能,这里就不再扩展了。
    2. 当然,也要注意到,sed直接操作文件的时候,一定要谨慎,一不小心就把重要内容删除了,找都找不回来,所以我们执行该命令前一定要做好备份,同时先进行测试看是否达到了预期效果。
  • 相关阅读:
    线程范围内共享数据
    Swagger+ springfox +Spring mvc
    Nginx代理实现跨域
    实现AJAX跨域访问方式一
    Tomcat 调优及 JVM 参数优化
    REST接口设计规范
    IDEA里面添加lombok插件,编写简略风格Java代码
    intelliJ idea 使用技巧&方法
    IntelliJ IDEA 创建maven项目
    IntelliJ IDEA + Maven创建Java Web项目
  • 原文地址:https://www.cnblogs.com/mediocreWorld/p/15946012.html
Copyright © 2020-2023  润新知