使用 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