paste命令

2022-09-20  本文已影响0人  V_b986

1. 命令概述

paste命令会把每个文件以列对列的方式,一列列地加以合并 ,他就是相当于把两个不同的文件内容粘贴在一起,形成新的文件。
注意:paste默认粘贴方式以列的方式粘贴,但是并不是不能以行的方式粘贴,加上-s选项就可以行方式粘贴。

2. 命令格式

用法:paste [选项]... [文件]...

3. 常用选项

将每个指定文件里的每一行整合到对应一行里写到标准输出,之间用制表符分隔。
如果没有指定文件,或指定文件为"-",程序将从标准输入读取数据。
长选项必须使用的参数对于短选项时也是必需使用的。
-d, --delimiters=列表 改用指定列表里的字符替代制表分隔符
-s, --serial 不使用平行的行目输出模式,而是每个文件占用一行
--help 显示此帮助信息并退出
--version 显示版本信息并退出

4. 参考示例

文件内容如下

[deng@lo]$ cat file1
1
2
3
4
5
6
[deng@lo]$ cat file2
AA
BB
CC
DD
EE
FF

4.1 合并两个文件

[deng@lo]$ paste file1 file2

1    AA
2    BB
3    CC
4    DD
5    EE
6    FF

可以看出 默认使用制表符分隔

[deng@lo]$ paste file1 file2 | sed -n l
1\tAA$
2\tBB$
3\tCC$
4\tDD$
5\tEE$
6\tFF$

4.2 指定字符代表制表符作为分隔符

[deng@lot]$ paste -d '*' file1 file2
1*AA
2*BB
3*CC
4*DD
5*EE
6*FF

4.3 每个文件合并成行而不是按行粘贴。(行列转置会用到)

[deng@lo]$ paste -s -d '*' file1 file2
1*2*3*4*5*6
AA*BB*CC*DD*EE*FF

要注意一点,此处一定要把星号用引号括起来(单引号双引号均可),否则 Shell]会把星号扩展为当前目录下的文件列表,千万小心。

4.4 行列倒转

[deng@lo]$ paste -s file1
1    2    3    4    5    6

4.5 两个文件行数不同

[deng@lo]$ paste file1 file2
1    AA
2    BB
3    CC
4    DD
5    EE
6    FF
7

注意, 参数的顺序对输出是有影响的

[deng@lo]$ paste file2 file1
AA   1
BB   2
CC   3
DD   4
EE   5
FF   6
    7

4.6 拼接多个文件

[deng@lo]$ paste file1 file2 file3
1    AA   aa
2    BB   bb
3    CC   cc
4    DD   dd
5    EE   ee
6    FF   ff
7

paste 好强大,多个文件,照样能够按行拼接。而且会发现,paste 拼接是和文件列表的顺序有关的。

上一篇下一篇

猜你喜欢

热点阅读