linux系统中将指定数目行合并为一行
1、创建测试数据
利用awk进行合并(1)
[root@linuxprobe test2]# seq -w 30 | xargs -n 2 | sed = | sed 'N;s/\n/> /' > a.txt ##创建测试数据
[root@linuxprobe test2]# cat a.txt
1> 01 02
2> 03 04
3> 05 06
4> 07 08
5> 09 10
6> 11 12
7> 13 14
8> 15 16
9> 17 18
10> 19 20
11> 21 22
12> 23 24
13> 25 26
14> 27 28
15> 29 30
[root@linuxprobe test2]# awk '{if (NR%2==0){print $0} else {printf "%s ",$0}}' a.txt ## 每两行合并为一行
1> 01 02 2> 03 04
3> 05 06 4> 07 08
5> 09 10 6> 11 12
7> 13 14 8> 15 16
9> 17 18 10> 19 20
11> 21 22 12> 23 24
13> 25 26 14> 27 28
15> 29 30 [root@linuxprobe test2]# awk '{if (NR%2==0){print $0} else {printf "%s ",$0}}' a.txt | sed '$ s/$/\n/' ## 没两行合并为一行
1> 01 02 2> 03 04
3> 05 06 4> 07 08
5> 09 10 6> 11 12
7> 13 14 8> 15 16
9> 17 18 10> 19 20
11> 21 22 12> 23 24
13> 25 26 14> 27 28
15> 29 30
[root@linuxprobe test2]# awk '{if (NR%3==0){print $0} else {printf "%s ",$0}}' a.txt | sed '$ s/$/\n/' ##三行合并
1> 01 02 2> 03 04 3> 05 06
4> 07 08 5> 09 10 6> 11 12
7> 13 14 8> 15 16 9> 17 18
10> 19 20 11> 21 22 12> 23 24
13> 25 26 14> 27 28 15> 29 30
[root@linuxprobe test2]# awk '{if (NR%4==0){print $0} else {printf "%s ",$0}}' a.txt | sed '$ s/$/\n/' ##四行合并
1> 01 02 2> 03 04 3> 05 06 4> 07 08
5> 09 10 6> 11 12 7> 13 14 8> 15 16
9> 17 18 10> 19 20 11> 21 22 12> 23 24
13> 25 26 14> 27 28 15> 29 30
利用awk进行合并(2)
[root@linuxprobe test2]# cat a.txt
1> 01 02
2> 03 04
3> 05 06
4> 07 08
5> 09 10
6> 11 12
7> 13 14
8> 15 16
9> 17 18
10> 19 20
11> 21 22
12> 23 24
13> 25 26
14> 27 28
15> 29 30
[root@linuxprobe test2]# awk '{if(NR%2!=0) ORS=" "; else ORS="\n";print}' a.txt ## 两行合并
1> 01 02 2> 03 04
3> 05 06 4> 07 08
5> 09 10 6> 11 12
7> 13 14 8> 15 16
9> 17 18 10> 19 20
11> 21 22 12> 23 24
13> 25 26 14> 27 28
15> 29 30 [root@linuxprobe test2]# awk '{if(NR%2!=0) ORS=" "; else ORS="\n";print}' a.txt | sed '$ s/$/\n/'
1> 01 02 2> 03 04
3> 05 06 4> 07 08
5> 09 10 6> 11 12
7> 13 14 8> 15 16
9> 17 18 10> 19 20
11> 21 22 12> 23 24
13> 25 26 14> 27 28
15> 29 30
[root@linuxprobe test2]# awk '{if(NR%3!=0) ORS=" "; else ORS="\n";print}' a.txt | sed '$ s/$/\n/' ## 末尾多了空行??
1> 01 02 2> 03 04 3> 05 06
4> 07 08 5> 09 10 6> 11 12
7> 13 14 8> 15 16 9> 17 18
10> 19 20 11> 21 22 12> 23 24
13> 25 26 14> 27 28 15> 29 30
[root@linuxprobe test2]# awk '{if(NR%4!=0) ORS=" "; else ORS="\n";print}' a.txt | sed '$ s/$/\n/' ## 四行合并
1> 01 02 2> 03 04 3> 05 06 4> 07 08
5> 09 10 6> 11 12 7> 13 14 8> 15 16
9> 17 18 10> 19 20 11> 21 22 12> 23 24
13> 25 26 14> 27 28 15> 29 30
参考:https://www.cnblogs.com/Ghost-bird/p/11591861.html
【推荐】国内首个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 绘制太阳,地球,月球 运作规律