使用示例在 Linux 中粘贴命令
粘贴命令是 Unix 或 Linux 操作系统中非常有用的命令之一。它用于水平连接文件(并行合并),方法是将指定的每个文件的行组成的行输出到标准输出,以制表符作为分隔符分隔。当没有指定文件,或者用破折号(“-”)代替文件名时,paste 从标准输入读取并给出输出,直到给出中断命令[Ctrl-c] 。
句法:
paste [OPTION]... [FILES]...
让我们考虑具有名称state 、 capital和number 的三个文件。州和首都文件分别包含5个印度州和首都的名称。 number文件包含 5 个数字。
$ cat state
Arunachal Pradesh
Assam
Andhra Pradesh
Bihar
Chhattisgrah
$ cat capital
Itanagar
Dispur
Hyderabad
Patna
Raipur
没有任何选项 paste 并行合并文件。 paste 命令从文件中写入相应的行,并在终端上以制表符作为分隔符。
$ paste number state capital
1 Arunachal Pradesh Itanagar
2 Assam Dispur
3 Andhra Pradesh Hyderabad
4 Bihar Patna
5 Chhattisgrah Raipur
在上面的命令中,三个文件是通过粘贴命令合并的。
选项:
1. -d(分隔符):粘贴命令默认使用制表符分隔符来合并文件。可以使用-d选项将分隔符更改为任何其他字符。如果将多个字符指定为分隔符,则 paste 以循环方式为每个文件行分隔使用它。
Only one character is specified
$ paste -d "|" number state capital
1|Arunachal Pradesh|Itanagar
2|Assam|Dispur
3|Andhra Pradesh|Hyderabad
4|Bihar|Patna
5|Chhattisgrah|Raipur
More than one character is specified
$ paste -d "|," number state capital
1|Arunachal Pradesh,Itanagar
2|Assam,Dispur
3|Andhra Pradesh,Hyderabad
4|Bihar,Patna
5|Chhattisgrah,Raipur
First and second file is separated by '|' and second and third is separated by ','.
After that list is exhausted and reused.
2. -s(串行):我们可以使用 -s 选项按顺序合并文件。它从单个文件中读取所有行,并将所有这些行合并为一行,每行由制表符分隔。这些单行由换行符分隔。
$ paste -s number state capital
1 2 3 4 5
Arunachal Pradesh Assam Andhra Pradesh Bihar Chhattisgrah
Itanagar Dispur Hyderabad Patna Raipur
在上面的命令中,首先从数字文件中读取数据并将它们合并为一行,每行以制表符分隔。之后字符被引入并且从下一个文件,即状态开始和过程再次重复读取,直至所有文件被读取。
-d 和 -s 的组合:以下示例显示如何为文件的顺序合并指定分隔符:
$ paste -s -d ":" number state capital
1:2:3:4:5
Arunachal Pradesh:Assam:Andhra Pradesh:Bihar:Chhattisgrah
Itanagar:Dispur:Hyderabad:Patna:Raipur
3. –version:此选项用于显示当前系统上运行的粘贴版本。
$ paste --version
paste (GNU coreutils) 8.26
Packaged by Cygwin (8.26-2)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later .
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by David M. Ihnat and David MacKenzie.
粘贴命令的应用
1.合并N个连续行: paste命令也可以用来将一个文件中的N个连续行合并为一行。这里 N 可以通过在粘贴后指定数字连字符 (-) 来指定。
With 2 hyphens
$ cat capital | paste - -
Itanagar Dispur
Hyderabad Patna
Raipur
With 3 hyphens
$ paste - - - < capital
Itanagar Dispur Hyderabad
Patna Raipur
2. 与其他命令的结合:尽管paste需要至少两个文件来连接行,但是shell 可以给出一个文件中的数据。就像在我们下面的示例中一样, cut命令与-f选项一起用于剪切状态文件的第一个字段,并且输出通过具有一个文件名的 paste 命令进行流水线化,并且指定了第二个文件名连字符而不是第二个文件名。
注意:如果未指定连字符,则不会粘贴来自 shell 的输入。
Without hypen
$ cut -d " " -f 1 state | paste number
1
2
3
4
5
With hypen
$ cut -d " " -f 1 state | paste number -
1 Arunachal
2 Assam
3 Andhra
4 Bihar
5 Chhattisgrah
可以通过更改连字符的位置来更改粘贴的顺序:
$ cut -d " " -f 1 state | paste - number
Arunachal 1
Assam 2
Andhra 3
Bihar 4
Chhattisgrah 5