详解Linux paste命令:将两个文件的行合并为一行

  • Post category:Linux

Linux paste命令

paste命令用于将多个文本文件合并成一列或多列,连接符可以自定义或使用默认的制表符作为连接符。

命令语法

paste命令的基本语法如下:

paste [OPTION]... [FILE]...
  • OPTION: 可选参数,可参考man手册来获取帮助信息。
  • FILE: 要合并的文本文件的路径。

常用选项

  • -d, --delimiters=LIST: 指定连接符,多个连接符可以使用逗号分隔。
  • -s, --serial: 使用串联的方式连接多个文件,而不是平行的方式连接。串联的意思是依次将文件内容合并在一起。
  • -z, --zero-terminated: 以NULL字符作为行分隔符。

使用示例

示例一:合并多个文件的列

我们在~/test目录下创建三个文件file1.txtfile2.txtfile3.txt,以cat命令查看文件内容如下:

cd ~/test
echo "file1 content1" > file1.txt
echo "file1 content2" >> file1.txt
echo "file2 content1" > file2.txt
echo "file2 content2" >> file2.txt
echo "file3 content1" > file3.txt
echo "file3 content2" >> file3.txt

cat file1.txt
cat file2.txt
cat file3.txt

输出:

file1 content1
file1 content2

file2 content1
file2 content2

file3 content1
file3 content2

现在我们使用paste命令将三个文件的内容按照列的方式合并显示出来:

paste file1.txt file2.txt file3.txt

输出:

file1 content1  file2 content1  file3 content1
file1 content2  file2 content2  file3 content2

默认情况下,paste命令使用制表符作为连接符。

示例二:指定连接符

与上一个示例类似,我们继续使用file1.txtfile2.txtfile3.txt文件,并且修改file1.txt文件的第二行,加入一个逗号,内容如下:

cat file1.txt

输出:

file1 content1
file1 content2,

现在我们使用-d选项来指定逗号作为连接符,将三个文件的内容按照列的方式合并显示出来:

paste -d "," file1.txt file2.txt file3.txt

输出:

file1 content1,file2 content1,file3 content1
file1 content2,,file3 content2

注意到在第二行”file1 content2,”后面有两个逗号,这是因为file1.txt的第二行加了一个逗号。

以上就是paste命令的常规用法和两个示例。