Linux提供五种互不依赖的文本合并方法:一、cat命令顺序拼接;二、awk添加分隔标识;三、paste横向对齐;四、sed追加内容;五、join基于键值关联合并。

如果您需要将多个文本文件的内容合并为一个文件,Linux 提供了多种命令行工具来完成此任务。以下是几种常用且互不依赖的合并方法:
一、使用 cat 命令串联文件
cat 命令是最直接的方式,它按指定顺序读取文件内容并输出到标准输出或重定向至目标文件,适用于简单拼接且无需修改原始内容的场景。
1、在终端中输入 cat file1.txt file2.txt file3.txt > merged.txt,将三个文件按顺序合并并保存为 merged.txt。
2、若需追加到已有文件末尾,使用双大于号:cat file2.txt >> merged.txt。
3、如需合并当前目录下所有 .log 文件,可执行:cat *.log > all_logs.txt。
二、使用 awk 命令合并并添加分隔标识
awk 可在合并过程中插入自定义分隔符(如空行或文件名),便于后续识别各文件边界,适合需保留来源信息的批量处理。
1、执行命令:awk 'FNR==1{print "\n=== " FILENAME " ===\n"} 1' file1.txt file2.txt > labeled_merge.txt。
2、该命令在每个新文件开头插入带文件名的分隔标记,并保留原内容格式。
3、若仅需空行分隔,替换为:awk 'FNR==1 && NR!=1{print ""} 1' file1.txt file2.txt > spaced_merge.txt。
三、使用 paste 命令横向合并行
paste 默认以制表符为分隔符,将多个文件对应行并排组合,适用于列式数据对齐,例如将两列独立文本合成表格结构。
1、运行:paste -d ',' file1.txt file2.txt > combined.csv,用逗号替代默认制表符。
2、若三文件需并排合并,命令为:paste file1.txt file2.txt file3.txt > triple_merge.txt。
3、添加行号前缀辅助校验:paste numbered_paste.txt。
四、使用 sed 命令追加内容到指定位置
sed 支持在目标文件的特定行号后插入另一文件全部内容,适用于需精确控制插入点的场景,如向配置文件中间注入段落。
1、在 merged.txt 的第5行后插入 file2.txt 全部内容:sed -i '5r file2.txt' merged.txt。
2、若目标文件不存在,先创建空文件:touch merged.txt,再执行上述 sed 命令。
3、向文件末尾追加(等效于 cat >>,但统一用 sed 风格):sed -i '$r file3.txt' merged.txt。
五、使用 join 命令基于公共字段合并
join 要求两个文件均按第一列排序,然后依据该列值匹配并合并对应行,适用于键值关联型文本(如日志ID与详情映射)。
1、先对两文件排序:sort file1.txt > sorted1.txt && sort file2.txt > sorted2.txt。
2、执行关联合并:join sorted1.txt sorted2.txt > joined_output.txt。
3、若需保留未匹配行,添加 -a 选项:join -a 1 -a 2 sorted1.txt sorted2.txt > full_join.txt。









