myfreax

Linux paste命令合并文件

paste是允许您水平合并文件行的命令。它输出由指定为参数的每个文件的顺序对应的行组成的行,并由制表符分隔

3 min read
By myfreax
Linux paste命令合并文件
Linux paste命令合并文件

paste命令允许您水平合并文件行。它的输出由指定为参数的每个文件的顺序对应组成的行,并由制表符分隔。

在本教程中,我们将说明如何使用paste命令。包括命令的语法与选项,指定paste命令的分隔符,合并多个文件,单个文件行的合并,使用多个分隔符。

paste命令选项

paste是鲜为人知的Linux和Unix命令行工具之一。paste命令的语法形式是paste [OPTION].. [FILE]...[OPTION]paste命令的选项,是一个可选参数。

[FILE]可以零个或者多个文件,如果未提供文件参数,则必须指定参数为--表示标准输入paste命令从标准输入中读取内容。

假设我们有两个文件file1和file2,file1和file2包含以下内容。

Iron Man
Thor
Captain America
Hulk
Spider Man
file1
Black Widow
Captain Marvel
Dark Phoenix
Nebula
file2

在不指定任何选项运行paste命令时,paste命令将会读取文件使用空格分隔水平合并文件相对应的行。

除了将合并结果输出显示在屏幕上之外,您还可以使用重定向运算符>>>将其重定向到文件。

如果文件不存在,则会创建文件。 >重定向运算符将覆盖现有文件,而>>重定向运算符将输出附加到文件。

paste file1 file2
paste file1 file2 > file3
Iron Man	Black Widow
Thor	Captain Marvel
Captain America	Dark Phoenix
Hulk	Nebula
Spider Man

-d-delimiters选项允许您指定一个或者多个分隔符合并文件,而不是使用默认的TAB分隔符。

每个分隔符被连续使用。当指定分隔符参数用尽时,paste从分隔符参数第一个重新开始。

例如,要将_下划线用作分隔符,请运行命令paste -d '_' file1 file2。命令paste -d '%|' file1 file2 file1指定使用两个分隔符,分别是%|

paste -d '_' file1 file2
Iron Man_Black Widow
Thor_Captain Marvel
Captain America_Dark Phoenix
Hulk_Nebula
Spider Man_
paste -d '%|' file1 file2 file1

第一个和第二个文件中的行用分隔符列表中的第一个分隔符。第二和第三文件的行用第二个分隔符分隔。

如果提供了更多文件,paste命令从分隔符参数的第一个重新开始。

Iron Man%Black Widow|Iron Man
Thor%Captain Marvel|Thor
Captain America%Dark Phoenix|Captain America
Hulk%Nebula|Hulk
Spider Man%|Spider Man  

-s--serial选项指示paste命令将文件内所有行合并为一行,然后在合并指定的文件。

例如命令paste -s file1 file2,首先将file1file2所有行合并为一行,然后再合并两个文件。

-z--zero-terminated选项一起使用时,paste命令使用空字符来分隔,而不是默认的换行符。

pastefind -print0xargs -0命令结合使用来处理包含特殊字符的文件名时,此行为很方便。

paste -s file1 file2
Iron Man	Thor	Captain America	Hulk	Spider Man
Black Widow	Captain Marvel	Dark Phoenix	Nebula

结论

paste命令用于合并给定文件的相应行。如果您有任何疑问或反馈,请随时发表评论。