paste 命令

用途

连接其他文件的行。

语法

paste[-s ] [-d List ]File1. ..

描述

paste 命令从在命令行上指定的文件中读取输入。 如果出现 -(减号)作为文件名,此命令从标准输入中读取。 此命令使给定输入文件中的行并置并将结果行写到标准输出。

缺省情况下,paste 命令将每个文件当作栏,并用制表符水平连接它们(并行合并)。 可以将 paste 命令看作为 cat 命令(垂直并置文件,也就是一个文件接着一个文件)的相对命令。

使用-s标志时, 粘贴命令会合并同一输入文件的后续行(串行合并)。 缺省情况下,这些行用制表符连接。

注意:
  1. 粘贴命令最多支持 32767 个输入文件(OPEN_MAX常量)。
  2. pr -t -m命令的操作与粘贴命令类似,但会创建额外的空格、制表符和行,以实现漂亮的页面布局。
  3. 输入文件应为文本文件,但行数不限。

标志

描述
-d 列表 用指定在 List 参数(缺省是制表符)中的一个或多个字符来更改分隔输出中相应行的定界符。 如果在 List 参数中有多个字符,那么依次重复使用这些字符,直到输出结束。 在并行合并中,最后文件的行总是以换行符结束,而不是 List 参数中指定的某个字符。

下列特殊字符也可用在 List 参数中:

\n
换行符
\t
制表符
\\
反斜杠
\0
空字符串(不是空字符)
c
扩展字符

必须用引号将对 shell 有特殊意义的字符引起来。

-s 水平合并第一个文件的后继行。 使用此标志,paste 命令在进行下一个文件的操作之前一直处理整个文件。 当一个文件的行合并结束时,它强制一个换行然后合并下一个输入文件的行。每次一个地以同样的方式继续处理余下的输入文件。 除非使用-d标志,否则各行之间用制表符分隔。 不管 List 参数,文件的最后一个字符强制为换行符。

退出状态

本命令返回以下退出值:

描述
重大安全事件数量 成功完成。
>0 发生错误。

示例

  1. To paste several columns of data together, enter:
    paste names places dates > npd
    这会创建一个名为npd的数据names文件在一列中,而places文件,而dates第三个文件。 如果指定了names,placesdates文件看起来像
    names           places          dates
    rachel          New York        February 5
    jerry           Austin          March 13
    mark            Chicago         June 21
    marsha          Boca Raton      July 16
    scott           Seattle         November 4
    npd 文件包含
    rachel          New York        February 5
    jerry           Austin          March 13
    mark            Chicago         June 21
    marsha          Boca Raton      July 16
    scott           Seattle         November 4
    在每一行中用制表符隔开 name,place 和 date。 这些栏并不总是排成一行,因为制表符停止位每八个栏就设置一下。
  2. 要用除制表符以外的字符分隔列,请输入:
    paste  -d"!@" names places dates > npd
    这样就交替用 ! 和 @ 作为栏分隔符。 如果指定了names,placesdates文件与例 1 中的相同,那么npd文件包含
    rachel!New York@February 5
    jerry!Austin@March 13
    mark!Chicago@June 21
    marsha!Boca Raton@July 16
    scott!Seattle@November 4
  3. 要在多列中显示标准输入,请输入:
    ls | paste - - - -
    这样就在 4 个栏中列出当前目录。 每个-(减号)告诉 粘贴命令创建一列,其中包含从标准输入读取的数据。 第一行放置在第一栏中,第二行放置在第二栏中,依此类推。

    它等同于:

    ls | paste  -d"\t\t\t\n" -s -
    此示例用标准输入中的后继行填充跨页的栏。 该-d"\t\t\t\n"定义在每一列后插入的字符:制表符 (\t),以及一个换行符 (\n)之后。 如果没有 -d 标志,paste -s - 命令显示所有输入为一行,每一栏间有一个制表符。

文件

描述
/usr/bin/paste 包含 paste 命令。