linux系统中如何将多个连续的空行合并为一个空行

2021/7/5 7:21:59

本文主要是介绍linux系统中如何将多个连续的空行合并为一个空行,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、测试数据如下

[root@centos79 test]# ls
a.txt
[root@centos79 test]# cat a.txt
a g r e




i x k like
a f g liker
[root@centos79 test]# cat -A a.txt
a g r e$
$
$
$
$
i x k like$
a f g liker$

 

2、将多个空行合并为一个空行

[root@centos79 test]# ls
a.txt
[root@centos79 test]# cat a.txt
a g r e




i x k like
a f g liker
[root@centos79 test]# awk '{if($0 != ""){print NR,$0} else {print $0}}' a.txt   ## 给非空行加上行号
1 a g r e




6 i x k like
7 a f g liker
[root@centos79 test]# awk '{if($0 != ""){print NR,$0} else {print $0}}' a.txt |uniq  ## 对所有行去重
1 a g r e

6 i x k like
7 a f g liker
[root@centos79 test]# awk '{if($0 != ""){print NR,$0} else {print $0}}' a.txt |uniq|cut -d " " -f 2-  ## 删除行号
a g r e

i x k like
a f g liker

 

3、修改测试数据, 如果空行中是空格或者水平制表符

修改后的测试数据:

[root@centos79 test]# ls
a.txt
[root@centos79 test]# cat a.txt
a g r e




i x k like
a f g liker
[root@centos79 test]# sed -n l a.txt
a g r e$
$
  $
\t\t$
$
i x k like$
a f g liker$

 

4、将多个空行合并为一个空行

[root@centos79 test]# ls
a.txt
[root@centos79 test]# cat a.txt
a g r e




i x k like
a f g liker
[root@centos79 test]# awk '{if(length != 0){print NR,$0} else {print $0}}' a.txt  ## 以下结果说明 有空格和制表符的空行也会添加行号,因此先删除行首空格和制表符
1 a g r e

3
4

6 i x k like
7 a f g liker

 

删除行首空格和制表符:

[root@centos79 test]# sed -n l a.txt
a g r e$
$
  $
\t\t$
$
i x k like$
a f g liker$
[root@centos79 test]# sed 's/^\s*//g' a.txt |sed -n l  ## 删除行首的空格和制表符
a g r e$
$
$
$
$
i x k like$
a f g liker$
[root@centos79 test]# sed 's/^[\t ]*//g' a.txt | sed -n l  ##删除行首的空格和制表符
a g r e$
$
$
$
$
i x k like$
a f g liker$

 

将多个空行合并为一个空行:

[root@centos79 test]# ls
a.txt
[root@centos79 test]# cat a.txt
a g r e




i x k like
a f g liker
[root@centos79 test]# sed 's/^\s*//g' a.txt | cat -A  ## 删除行首的空格和制表符
a g r e$
$
$
$
$
i x k like$
a f g liker$
[root@centos79 test]# sed 's/^\s*//g' a.txt | awk '{if($0 != ""){print NR,$0} else {print $0}}'|uniq  ##将多个空行合并为一个空行
1 a g r e

6 i x k like
7 a f g liker
[root@centos79 test]# sed 's/^\s*//g' a.txt | awk '{if($0 != ""){print NR,$0} else {print $0}}'|uniq | cut -d " " -f 2-
a g r e

i x k like
a f g liker

 



这篇关于linux系统中如何将多个连续的空行合并为一个空行的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程