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
5、补充
[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$ [root@centos79 test]# sed -n '/^\s*$/p' a.txt | sed -n "$=" ## 统计空行的数目 5 [root@centos79 test]# sed -n '/^[\t ]*$/p' a.txt | wc -l ## 统计空行的数目 5 [root@centos79 test]# n=$(sed -n '/^[\t ]*$/p' a.txt | wc -l) [root@centos79 test]# echo $n 5 [root@centos79 test]# let a=n/2 ## 取循环的次数 [root@centos79 test]# echo $a 2 [root@centos79 test]# cp a.txt a.txt.bak ## 备份文件 [root@centos79 test]# for i in `seq $a`; do sed '/^\s*$/{n;/^\s*$/d}' a.txt -i; done ## 删除空行 [root@centos79 test]# cat a.txt a g r e i x k like a f g liker
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律