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
  • 相关阅读:
    引入RabbitMQ后,如何保证全链路数据100%不丢
    使用logstash迁移elasticsearch
    内网代理转发工具
    MSSQL存储过程命令执行
    win10 家庭版升级专业版密钥
    clash TUN模式
    windows实战常用命令
    webshell之jsp免杀
    tmux的使用方法
    钓鱼邮件从入门到放弃
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/15769387.html
Copyright © 2011-2022 走看看