在 Linux 中使用 paste 命令合并行
paste
是允许您水平合并文件行的命令。它输出由指定为参数的每个文件的顺序对应的行组成的行,并用制表符分隔。
在本教程中,我们将解释如何使用该 paste
命令。
如何使用 paste
命令
paste
是鲜为人知的 Linux 和 Unix 命令行实用工具之一。
该 paste
命令的常规语法如下:
paste [OPTION].. [FILE]...
如果没有提供输入文件或将 -
作为参数时,则 paste
使用标准输入。
假设我们有以下文件:
file1
Iron Man
Thor
Captain America
Hulk
Spider Man
file2
Black Widow
Captain Marvel
Dark Phoenix
Nebula
不带选项调用时, paste
将读取作为参数给出的所有文件,并水平合并文件的相应行,并以空格分隔:
paste file1 file2
Iron Man Black Widow
Thor Captain Marvel
Captain America Dark Phoenix
Hulk Nebula
Spider Man
除了将输出显示在屏幕上之外,您还可以使用 >
, >>
运算符将其重定向到文件:
paste file1 file2 > file3
如果文件不存在,将创建它。该 >
操作符将覆盖现有文件,而 >>
操作符将追加输出到文件中。
使用 -d
, -delimiters
选项,您可以指定用作分隔符的字符列表,而不是默认的 TAB
分隔符。
选项中的每个分隔符被依次使用。当列表用尽时, paste
从第一个分隔符重新开始。
要将下划线 _
字符用作分隔符而不是 TAB
,请输入:
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
该命令将合并给定文件中的所有行,并将每个文件放在单独的行中:
Iron Man Thor Captain America Hulk Spider Man
Black Widow Captain Marvel Dark Phoenix Nebula
当 paste
与 -z
, --zero-terminated
选项一起使用时,使用空字符来分隔项目,而不是默认的换行符。 paste
还可以与 find -print0
和 xargs -0
命令结合使用以处理包含特殊字符的文件名,此行为很方便。
结论
命令 paste
是一个用于合并给定文件的相应行的命令。