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
复制代码

 

posted @   小鲨鱼2018  阅读(672)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2021-01-05 c语言中逆向显示数值
2021-01-05 c语言中后置递增运算和前置递增运算的差异
2021-01-05 c语言中后置递减运算和前置递减运算的差异
2021-01-05 c语言while循环控制循环次数
2021-01-05 c语言while循环控制循环次数操作不同写法的结束变量差异
2021-01-05 c语言中while循环限定次数的操作
2021-01-05 c语言中表示乘方的运算
点击右上角即可分享
微信分享提示