今天给大家带来一个超级实用、但常被忽略的 Linux 文本处理命令——paste。
如果说 cat 是把文件上下拼接(纵向),那 paste 就是把文件左右并排(横向)。处理日志、生成表格、整理数据时,一行 paste 顶十行复杂脚本。
一、paste 到底是什么?
paste 是 Linux 系统自带的横向合并工具,核心作用:把多个文件的对应行,合并到同一行输出。
- • 适用场景:日志合并、生成 CSV、数据对齐、单列转多列
一句话记住:cat 竖着拼,paste 横着拼。
二、5 个最常用实战用法(直接复制可用)
1️⃣ 基础横向合并(最常用)
把两个文件按行左右对齐。
示例:names.txt(姓名)
AliceBobCharlie
scores.txt(分数)
859278
合并命令:
paste names.txt scores.txt
输出效果:
Alice 85Bob 92Charlie 78
2️⃣ 自定义分隔符(-d)
生成 CSV、配置文件时特别好用,支持逗号、冒号、竖线等。
paste -d ',' names.txt scores.txt
输出:
Alice,85Bob,92Charlie,78
✅ 进阶技巧:循环分隔符合并 3 个文件,指定 -d ',;',会自动循环使用分隔符:
paste -d ',;' file1 file2 file3
3️⃣ 串行合并(-s)
把一个文件的所有行,拼成一行。常用于:列表转单行、字符串拼接。
paste -s names.txt scores.txt
输出:
Alice Bob Charlie85 92 78
搭配分隔符一键转逗号分隔:
paste -s -d ',' names.txt
Alice,Bob,Charlie
4️⃣ 单列转多列(矩阵变换)
利用 - 表示标准输入,把一列数据自动折叠成多列。
示例文件 numbers.txt:
123456
转 2 列:
paste - - < numbers.txt
输出:
1 23 45 6
转 3 列:
paste - - - < numbers.txt
5️⃣ 管道实战(配合 ls/cut 无敌)
场景 1:文件列表转逗号分隔
ls | paste -s -d ',' -
场景 2:多文件合并后提取列
paste file1 file2 file3 | cut -f 1,3
三、重要注意事项
1. 文件行数不一致以行数多的文件为准,少的文件后续列为空。2. 流式处理paste 是逐行读取、逐行输出,不加载整个文件,处理 GB 级大文件毫无压力。3. 标准输入 -一个 - 读一行,写几个 - 就分成几列。四、速查总结表(建议收藏)
五、一句话收尾
cat 负责纵向拼接,paste 负责横向合并。