zoukankan      html  css  js  c++  java
  • sed删除空行(包括由空格组成的空行)

    sed实战之——删除空行(包括由空格组成的空行)

    首先要隆重介绍我们的测试文件,因为这是非常特殊的文件:
    forrest@ubuntu:~/Public$ cat -v wuhui.txt 
    1^M
    ^M
    2^M
      ^M
    3^M
        ^M
    4^M
              ^M
    5^M
                    ^M
    6^M
                            ^M
                      ^M
    我用cat -v选项,显示不可见字符。^M是换行的意思。不过这是不正常的。正常的文件换行符用-v也是看不到的。
    这里如下四种空行:
    1、单独一个换行符
    2、N个空格+换行
    3、N个TAB+换行
    4、N个(空格&TAB)+换行
    对于这个文件,如果使用:
    forrest@ubuntu:~/Public$ sed /^$/d wuhui.txt
    1
    2
      
    3
       
    4
              
    5
                    
    6
                            
                      
    forrest@ubuntu:~/Public$ 
    是没有效果的。因为由于特殊字符的存在,空行并不是真的空行(^$)。Google了一下,可以使用这个命令来匹配:
    forrest@ubuntu:~/Public$ sed /^[[:space:]]*$/d wuhui.txt
    1
    2
    3
    4
    5
    6
    forrest@ubuntu:~/Public$ 
    [[:space:]]表示空格或者tab的集合,这里有点意外的是居然匹配了^M这个不可见的换行符号。另外,注意到[[:space:]]后面跟着一个*,表示匹配0个或多个。
    [[:space:]]可以用s表示,如下:
    forrest@ubuntu:~/Public$ sed '/^s*$/d' wuhui.txt
    1
    2
    3
    4
    5
    6
    forrest@ubuntu:~/Public$
    但是使用转义字符,一定要对命令添加引号:
    forrest@ubuntu:~/Public$ sed /^s*$/d wuhui.txt
    1
    2
      
    3
       
    4
              
    5
                    
    6
                            
                      
    forrest@ubuntu:~/Public$ 
  • 相关阅读:
    开发工具
    CPU知识
    GMAP.NET
    vtordisp
    Hadoop HBase 配置 安装 Snappy 终极教程
    asp.net Vs访问正常,iis访问出现各种问题的部分处理方法
    MVC项目小结:动态菜单
    视频的采集和动态显示
    《编程之美》
    Nginx实现简单的负载均衡web访问
  • 原文地址:https://www.cnblogs.com/double12gzh/p/10166194.html
Copyright © 2011-2022 走看看