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
  • 相关阅读:
    读《梦断代码》有感
    The Third Group Meeting!
    第一次课程作业项目报告
    第四次读后感
    个人作业进度(五)
    个人作业进度(四)
    个人作业进度(三)
    个人进度(二)
    个人作业进度(一)
    java中类的封装与继承
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/15769387.html
Copyright © 2011-2022 走看看