paste 命令
用途
连接其他文件的行。
语法
描述
paste 命令从命令行上指定的文件中读取输入。 如果出现 -(减号)作为文件名,此命令从标准输入中读取。 此命令使给定输入文件中的行并置并将结果行写到标准输出。
缺省情况下,paste 命令将每个文件当作栏,并用制表符水平连接它们(并行合并)。 您可以将 paste 命令视为 cat 命令的对等项 (垂直连接文件,即一个文件一个文件)。
使用 -s 标志, paste 命令组合同一输入文件的后续行 (串行合并)。 缺省情况下,这些行用制表符连接。
注意:
- paste 命令最多支持 32767 个输入文件 (
OPEN_MAX常量)。 pr-t -m命令的操作类似于 paste 命令的操作,但会为不错的页面布局创建额外的空间,选项卡和行。- 输入文件应该是文本文件,但可能包含无限数量的行长度。
标志
| 项 | 描述 |
|---|---|
| -d 列表 | 用指定在 List 参数(缺省是制表符)中的一个或多个字符来更改分隔输出中相应行的定界符。 如果在
List 参数中有多个字符,那么依次重复使用这些字符,直到输出结束。 在并行合并中,最后文件的行总是以换行符结束,而不是 List 参数中指定的某个字符。 下列特殊字符也可用在 List 参数中:
必须用引号将对 shell 有特殊意义的字符引起来。 |
| -s | 水平合并第一个文件的后继行。 使用此标志,paste 命令在进行下一个文件的操作之前一直处理整个文件。 当一个文件的行合并结束时,它强制一个换行然后合并下一个输入文件的行。每次一个地以同样的方式继续处理余下的输入文件。 除非使用 -d 标志,否则制表符将分隔行。 不管 List 参数,文件的最后一个字符强制为换行符。 |
退出状态
本命令返回以下退出值:
| 项 | 描述 |
|---|---|
| 重大安全事件数量 | 成功完成。 |
| >0 | 发生错误。 |
示例
- 要将多列数据一起粘贴,请输入:
这将创建一个名为paste names places dates > npdnpd的文件,该文件在一列中包含来自names文件的数据,在另一列中包含places文件,在第三列中包含dates文件。 如果names,places和dates文件如下所示:
那么names places dates rachel New York February 5 jerry Austin March 13 mark Chicago June 21 marsha Boca Raton July 16 scott Seattle November 4npd文件包含:
在每一行中用制表符隔开 name,place 和 date。 这些栏并不总是排成一行,因为制表符停止位每八个栏就设置一下。rachel New York February 5 jerry Austin March 13 mark Chicago June 21 marsha Boca Raton July 16 scott Seattle November 4 - 要用除制表符以外的字符分隔列,请输入:这样就交替用 ! 和 @ 作为栏分隔符。 如果
paste -d"!@" names places dates > npdnames,places和dates文件和示例 1 中的一样,那么npd文件包含:rachel!New York@February 5 jerry!Austin@March 13 mark!Chicago@June 21 marsha!Boca Raton@July 16 scott!Seattle@November 4 - 要在多列中显示标准输入,请输入:
这样就在 4 个栏中列出当前目录。 每个ls | paste - - - --(减号) 指示 paste 命令创建包含从标准输入读取的数据的列。 第一行放置在第一栏中,第二行放置在第二栏中,依此类推。它等同于:
此示例用标准输入中的后继行填充跨页的栏。ls | paste -d"\t\t\t\n" -s --d"\t\t\t\n"定义要在每列后插入的字符: 前三列后的制表符 (\t) 和第四列后的换行符 (\n)。 如果没有 -d 标志,paste -s - 命令显示所有输入为一行,每一栏间有一个制表符。
文件
| 项 | 描述 |
|---|---|
| /usr/bin/paste | 包含 paste 命令。 |