paste 常用指令
paste 命令是 Linux 中一个非常实用的文本处理工具,常被称为“横向合并”工具。如果说 cat 是将文件上下连接(纵向),那么 paste 就是将文件左右并排(横向)。
它的核心功能是将多个文件的对应行合并到同一行输出,默认使用制表符(Tab)作为分隔符。
以下是 paste 命令的常用指令样例和实战场景:
1. 基础合并(左右并排)
这是最常用的功能,将两个或多个文件的内容按行合并。
- 场景:你有两个文件,
names.txt(姓名)和scores.txt(分数),想把它们拼成一张表。 - 命令:
paste names.txt scores.txt - 效果:
(注:中间的空隙默认为 Tab 键)Alice 85 Bob 92 Charlie 78
2. 自定义分隔符 (-d)
默认是 Tab 分隔,但在生成 CSV 文件或配置文件时,通常需要逗号、冒号或空格。
- 场景:生成以逗号分隔的 CSV 格式数据。
- 命令:
paste -d ',' names.txt scores.txt - 效果:
Alice,85 Bob,92 Charlie,78 - 进阶技巧(循环分隔符):
如果你合并 3 个文件,指定-d ',;',paste会循环使用逗号和分号(第1、2列间用逗号,第2、3列间用分号)。paste -d ',;' file1.txt file2.txt file3.txt
3. 串行合并 (-s)
这个参数会改变合并的方向,它不再按行对齐,而是把一个文件的所有行合并成一行,下一个文件的内容合并到下一行。
- 场景:把一个竖排的列表变成横排,或者把多个文件的列表分别转成单行。
- 命令:
paste -s names.txt scores.txt - 效果:
(注:第一个文件的所有行变成了第一行,第二个文件的所有行变成了第二行)Alice Bob Charlie 85 92 78
4. 将单列数据转为多列(矩阵变换)
这是一个非常巧妙的用法,利用 - 代表标准输入,可以将一列数据“折叠”成多列。
- 场景:你有一个包含 1 到 6 数字的文件
numbers.txt,想把它变成 2 列显示。 - 命令:
(解释:两个paste - - < numbers.txt-表示读取两次输入,每次读一行并排输出) - 效果:
1 2 3 4 5 6 - 变体:如果你想变成 3 列:
paste - - - < numbers.txt
5. 结合管道与其他命令
paste 可以很好地处理标准输入,常与 ls 或 cut 配合使用。
-
场景 A:将目录下的文件列表合并成一行(逗号分隔)
ls | paste -s -d ',' -输出示例:
file1.txt,file2.txt,script.sh -
场景 B:合并后提取特定列
先合并,再用cut提取第 1 列和第 3 列:paste file1.txt file2.txt file3.txt | cut -f 1,3
总结速查表
| 需求 | 命令示例 | 说明 |
|---|---|---|
| 默认合并 | paste A B |
左右并排,Tab 分隔 |
| 指定分隔符 | paste -d ',' A B |
使用逗号连接 |
| 转置/串行 | paste -s A B |
A文件变一行,B文件变一行 |
| 单列变多列 | paste - - < A |
将A文件每2行合并为1行输出 |
| 保存结果 | paste A B > C |
将结果重定向保存到文件 C |
小贴士:如果合并的两个文件行数不一致,paste 会以行数较多的那个文件为准,较短的文件在合并完后,后续行会显示为空。

浙公网安备 33010602011771号