使用 cat
命令(最常用)
原理:cat
(concatenate)命令按顺序读取文件内容并输出到屏幕或新文件。
场景:合并文本文件(如日志、配置文件)。
命令示例:
cat file1.txt file2.txt file3.txt > merged_file.txt
- 关键参数:
>
:覆盖写入新文件(若文件存在则清空)。>>
:追加到文件末尾(不覆盖旧内容)。
- 注意事项:
- 文件顺序决定合并顺序(
file1.txt
内容在前)。 - 支持通配符:
cat *.log > all_logs.txt
合并当前目录所有.log
文件。
- 文件顺序决定合并顺序(
使用 paste
命令(按行合并)
原理:将多个文件的每一行并行拼接(类似表格列合并)。
场景:合并CSV/TSV文件、对比数据列。
命令示例:
paste file1.txt file2.txt > merged_columns.txt
- 输出示例:
file1行1内容 file2行1内容 file1行2内容 file2行2内容
- 关键参数:
-d ','
:指定分隔符(例如逗号),默认制表符分隔。
使用 awk
命令(复杂合并)
原理:逐行处理文件,支持条件判断与格式控制。
场景:需过滤内容、添加分隔符或处理结构化数据。
命令示例:
awk '{print}' file1.txt file2.txt > merged_awk.txt # 基础合并 awk 'FNR==1 {print "---新文件开始---"} {print}' file1.txt file2.txt > merged_with_header.txt # 文件间添加分隔标识
使用 sed
命令(流编辑器)
原理:通过流处理插入内容或标记。
场景:需在合并时修改内容(如添加行号)。
命令示例:
sed 's/^/行前缀 /' file1.txt > temp.txt # 为每行添加前缀 cat temp.txt file2.txt > merged_sed.txt
使用 echo
和重定向(少量内容)
原理:直接输出文本到文件。
场景:合并小段文本或生成新文件。
命令示例:
echo "文件头" > merged_echo.txt cat file1.txt >> merged_echo.txt echo "文件尾" >> merged_echo.txt
⛔ 注意事项
- 备份文件:合并前用
cp original.txt backup/
备份,避免误操作。 - 文件编码:确保所有文件为相同编码(如UTF-8),用
file -i filename
检查。 - 大文件处理:
- 使用
split
分割大文件再合并。 - 避免
echo
处理大文件(内存溢出风险)。
- 使用
- 二进制文件:用
cat file1.bin file2.bin > merged.bin
合并(勿用paste
/awk
)。
✅ 方法选择指南
需求 | 推荐命令 |
---|---|
简单文本合并 | cat |
按行拼接列 | paste |
合并时修改内容 | awk/sed |
添加头尾信息 | echo |
Linux提供了多种灵活的文件合并方案,cat
是通用首选,paste
和 awk
满足高级需求,操作前务必验证文件顺序和编码,关键数据做好备份,这些命令作为Linux核心工具链的一部分,已通过数十年社区验证,可安全用于生产环境。
引用说明基于Linux核心工具手册(GNU Coreutils 9.1)、IBM官方文档及Stack Exchange社区实践案例综合整理。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9963.html