zoukankan      html  css  js  c++  java
  • linux中如何删除空行

    1、测试数据

    root@DESKTOP-1N42TVH:/home/test# ls
    a.txt
    root@DESKTOP-1N42TVH:/home/test# cat a.txt
    i A E F
    
    d q d M
    
    
    d e N f
    root@DESKTOP-1N42TVH:/home/test# cat -A a.txt   ## 空行中没有空格或者制表符
    i A E F$
    $
    d q d M$
    $
    $
    d e N f$
    root@DESKTOP-1N42TVH:/home/test# sed -n l a.txt
    i A E F$
    $
    d q d M$
    $
    $
    d e N f$

    2、sed删除空行

    root@DESKTOP-1N42TVH:/home/test# ls
    a.txt
    root@DESKTOP-1N42TVH:/home/test# cat a.txt
    i A E F
    
    d q d M
    
    
    d e N f
    root@DESKTOP-1N42TVH:/home/test# cat -A a.txt
    i A E F$
    $
    d q d M$
    $
    $
    d e N f$
    root@DESKTOP-1N42TVH:/home/test# sed '/^$/d' a.txt  ## 直接删除空行
    i A E F
    d q d M
    d e N f
    root@DESKTOP-1N42TVH:/home/test# sed -n '/^$/!p' a.txt  ## 不打印空行
    i A E F
    d q d M
    d e N f

    3、grep删除空行

    root@DESKTOP-1N42TVH:/home/test# ls
    a.txt
    root@DESKTOP-1N42TVH:/home/test# cat a.txt
    i A E F
    
    d q d M
    
    
    d e N f
    root@DESKTOP-1N42TVH:/home/test# cat -A a.txt
    i A E F$
    $
    d q d M$
    $
    $
    d e N f$
    root@DESKTOP-1N42TVH:/home/test# grep -v "^$" a.txt  ##不匹配空行
    i A E F
    d q d M
    d e N f
    root@DESKTOP-1N42TVH:/home/test# grep "." a.txt  ##匹配有字符的行
    i A E F
    d q d M
    d e N f

    4、awk删除空行

    root@DESKTOP-1N42TVH:/home/test# ls
    a.txt
    root@DESKTOP-1N42TVH:/home/test# cat a.txt
    i A E F
    
    d q d M
    
    
    d e N f
    root@DESKTOP-1N42TVH:/home/test# cat -A a.txt
    i A E F$
    $
    d q d M$
    $
    $
    d e N f$
    root@DESKTOP-1N42TVH:/home/test# awk '!/^$/' a.txt  ## 不匹配空行
    i A E F
    d q d M
    d e N f
    root@DESKTOP-1N42TVH:/home/test# awk '$0 ~ "."' a.txt  ##匹配具有字符的行
    i A E F
    d q d M
    d e N f
    root@DESKTOP-1N42TVH:/home/test# awk NF a.txt   ## 不太明白
    i A E F
    d q d M
    d e N f

    5、tr删除空行

    root@DESKTOP-1N42TVH:/home/test# ls
    a.txt
    root@DESKTOP-1N42TVH:/home/test# cat a.txt
    i A E F
    
    d q d M
    
    
    d e N f
    root@DESKTOP-1N42TVH:/home/test# cat -A a.txt
    i A E F$
    $
    d q d M$
    $
    $
    d e N f$
    root@DESKTOP-1N42TVH:/home/test# cat a.txt | tr -s "\n"   ##将连续的换行符压缩为一个换行符
    i A E F
    d q d M
    d e N f

    6、调整测试数据,空行中包含有空格或者制表符

    root@DESKTOP-1N42TVH:/home/test# ls
    a.txt
    root@DESKTOP-1N42TVH:/home/test# cat a.txt
    i A E F
    
    d q d M
    
    
    
    d e N f
    root@DESKTOP-1N42TVH:/home/test# cat -A a.txt  ## 测试数据,空行中添加了空格和制表符
    i A E F$
    $
    d q d M$
       ^I^I$
    ^I^I$
       $
    d e N f$
    root@DESKTOP-1N42TVH:/home/test# sed -n l a.txt
    i A E F$
    $
    d q d M$
       \t\t$
    \t\t$
       $
    d e N f$

    7、利用sed、grep、awk、tr删除空格

    root@DESKTOP-1N42TVH:/home/test# ls
    a.txt
    root@DESKTOP-1N42TVH:/home/test# cat a.txt
    i A E F
    
    d q d M
    
    
    
    d e N f
    root@DESKTOP-1N42TVH:/home/test# cat -A a.txt
    i A E F$
    $
    d q d M$
       ^I^I$
    ^I^I$
       $
    d e N f$
    root@DESKTOP-1N42TVH:/home/test# sed '/^$/d' a.txt
    i A E F
    d q d M
    
    
    
    d e N f
    root@DESKTOP-1N42TVH:/home/test# grep -v "^$" a.txt
    i A E F
    d q d M
    
    
    
    d e N f
    root@DESKTOP-1N42TVH:/home/test# awk '!/^$/' a.txt
    i A E F
    d q d M
    
    
    
    d e N f
    root@DESKTOP-1N42TVH:/home/test# cat a.txt | tr -s "\n"    ##均不能删除包含空格或者制表符的行
    i A E F
    d q d M
    
    
    
    d e N f

    8、使用sed、awk删除包含空格或者制表符的空行

    sed实现

    root@DESKTOP-1N42TVH:/home/test# ls
    a.txt
    root@DESKTOP-1N42TVH:/home/test# cat a.txt
    i A E F
    
    d q d M
    
    
    
    d e N f
    root@DESKTOP-1N42TVH:/home/test# cat -A a.txt
    i A E F$
    $
    d q d M$
       ^I^I$
    ^I^I$
       $
    d e N f$
    root@DESKTOP-1N42TVH:/home/test# sed '/^[\t ]*$/d' a.txt  ## sed将包含行开头包含空格或者制表符的行删除
    i A E F
    d q d M
    d e N f
    root@DESKTOP-1N42TVH:/home/test# sed '/^\s*$/d' a.txt  ##\s等价于[\t]
    i A E F
    d q d M
    d e N f
    root@DESKTOP-1N42TVH:/home/test# sed -n '/^[\t ]*$/!p' a.txt  ## 反向提取
    i A E F
    d q d M
    d e N f

    awk实现

    root@DESKTOP-1N42TVH:/home/test# ls
    a.txt
    root@DESKTOP-1N42TVH:/home/test# cat a.txt
    i A E F
    
    d q d M
    
    
    
    d e N f
    root@DESKTOP-1N42TVH:/home/test# cat -A a.txt
    i A E F$
    $
    d q d M$
       ^I^I$
    ^I^I$
       $
    d e N f$
    root@DESKTOP-1N42TVH:/home/test# awk '!/^[\t ]*$/' a.txt  ## 反向匹配
    i A E F
    d q d M
    d e N f
    root@DESKTOP-1N42TVH:/home/test# awk NF a.txt  ##不太明白
    i A E F
    d q d M
    d e N f
  • 相关阅读:
    PPT文档页数显示的增加和更新
    Android http超时选项的测试
    64位win7硬盘安装64位ubuntu 13.04
    为博客园添加目录的配置总结
    Android webview通过http get下载文件下载两次的问题及解决方法
    ubuntu12.04安装搜狗输入法和配置
    samsung Galaxy s2(GT i9100g )刷机升级至4.4小记
    uva 11584 Partitioning by Palindromes
    uva 10534 Wavio Sequence
    poj 1185 炮兵阵地
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/15769387.html
Copyright © 2011-2022 走看看