linux运维、日志分析、数据处理中,文件合并是高频操作。很多人只会简单的cat拼接,遇到分列、关联、批量合并场景效率极低。今天整理一套实用、全覆盖的文件合并命令,全部是生产可用干货。
linux文件合并分为四种常用场景:纵向拼接、横向分列、关键字关联、智能筛选合并。
一、纵向合并:cat
作用:多文件上下纵向拼接,适用于日志、普通文本合并,是日常我们使用比较多的命令。
1、基础语法
#覆盖合并(新建文件)cat 文件1 文件2 > 合并文件#追加合并(保留原文件内容,生产常用)cat 文件1 文件2 >> 目标文件#批量合并同类型文件cat *.txt > all.txt



-n #合并时显示所有内容行号-b #仅对非空行显示行号(过滤空行编号)-E #每行末尾显示结束符$,方便排查换行问题
作用:多文件按行左右横向合并,适合表格、两列配对数据(账号/信息等)。
#默认tab分隔横向合并paste file1.txt file2.txt > merge.txt#自定义分隔符(逗号、竖线,适配csv/日志)paste -d "," file1.txt file2.txt > data.csvpaste -d "|" file1.txt file2.txt > log.txt#单文件所有行合并为一行paste -s -d "," file.txt > one_line.txt

作用:根据相同关键字匹配合并两个文件,类似数据库 JOIN,用于数据对账、信息关联。
适用场景:用户信息匹配、账号数据关联、日志关联对账、结构化数据合并。
必备前提:两个文件的关联关键字必须提前排序,否则合并失效!
#基础关键字匹配合并join file1.txt file2.txt > merge.txt#指定不同文件的关联列,用的不多join -1 2 -2 1 file1.txt file2.txt#保留所有数据(含不匹配行)join -a1 -a2 file1.txt file2.txt


作用:解决复杂合并场景,支持合并去重、筛选关键字、批量规整数据,是文本处理万能命令。
#基础批量合并(等效cat)awk '{print}' *.txt > all.txt#合并并自动去重(生产高频)awk '!a[$0]++' *.txt > unique_all.txt#筛选关键字后合并(如只合并错误日志)awk '/error/' secure* > error_all.log



五、辅助命令:tee
作用:合并保存文件的同时,终端实时打印结果,无需重复查看文件。
#合并并预览cat file1.txt file2.txt | tee merge.txt#追加合并并预览cat file3.txt | tee -a merge.txt


命令 | 合并方式 | 适用场景 |
cat | 纵向上下拼接 | |
paste | 横向分列拼接 | 表格、结构化两列数据合并 |
join | 关键字关联合并 | 数据对账、字段匹配关联 |
awk | 自定义智能合并 | 去重、筛选、复杂批量合并 |
1、常规文本/日志合并:直接用cat,简洁高效,支持通配符批量操作;
2、表格/分列数据:使用paste,可自定义分隔符适配各类格式;
3、关联数据对账:使用join,务必提前排序关联字段,避免合并异常;
4、去重/筛选合并:优先awk,可搞定绝大多数复杂文本合并需求;
5、需要实时核对结果:搭配tee命令,合并、预览一步到位。
以上命令覆盖生产环境90%的linux文件合并场景,无冗余操作、全是实战干货。如果你觉得文章对你的运维工作有帮助,记得点赞加关注。