📜  使用示例在 Linux 中粘贴命令

📅  最后修改于: 2022-05-13 01:57:31.785000             🧑  作者: Mango

使用示例在 Linux 中粘贴命令

粘贴命令是 Unix 或 Linux 操作系统中非常有用的命令之一。它用于水平连接文件(并行合并),方法是将指定的每个文件的行组成的行输出到标准输出,以制表符作为分隔符分隔。当没有指定文件,或者用破折号(“-”)代替文件名时,paste 从标准输入读取并给出输出,直到给出中断命令[Ctrl-c]

句法:

paste [OPTION]... [FILES]...

让我们考虑具有名称statecapitalnumber 的三个文件。首都文件分别包含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