paste 常用指令

paste 命令是 Linux 中一个非常实用的文本处理工具,常被称为“横向合并”工具。如果说 cat 是将文件上下连接(纵向),那么 paste 就是将文件左右并排(横向)。

它的核心功能是将多个文件的对应行合并到同一行输出,默认使用制表符(Tab)作为分隔符。

以下是 paste 命令的常用指令样例和实战场景:

1. 基础合并(左右并排)

这是最常用的功能,将两个或多个文件的内容按行合并。

  • 场景:你有两个文件,names.txt(姓名)和 scores.txt(分数),想把它们拼成一张表。
  • 命令
    paste names.txt scores.txt
    
  • 效果
    Alice   85
    Bob     92
    Charlie 78
    
    (注:中间的空隙默认为 Tab 键)

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 可以很好地处理标准输入,常与 lscut 配合使用。

  • 场景 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 会以行数较多的那个文件为准,较短的文件在合并完后,后续行会显示为空。

posted @ 2026-04-20 10:52  涣明  阅读(11)  评论(0)    收藏  举报