Linux 文件管理 : paste 命令详解

paste命令用于合并文件的列。

paste指令会把每个文件以列对列的方式,一列列地加以合并。

语法

paste [-s][-d <间隔字符>][--help][--version][文件...][-s][-d <间隔字符>][--help][--version][文件...]

参数

  • -d<间隔字符>或--delimiters=<间隔字符>  用指定的间隔字符取代跳格字符。
  • -s或--serial  串列进行而非平行处理。
  • --help  在线帮助。
  • --version  显示帮助信息。
  • [文件…] 指定操作的文件路径

 

详解:

 

1 paste的拼凑原理是什么?

这个很简单,和cut的原理几乎一样,就是将几个文件的相应行用制表符连接起来,并输出到标准输出。

paste最简单的使用方法是:

[rocrocket@rocrocket programming]$ cat p1.txt

1
2
3
[rocrocket@rocrocket programming]$ cat p2.txt
a
b
c
[rocrocket@rocrocket programming]$ paste p1.txt p2.txt
1    a
2    b
3    c
[rocrocket@rocrocket programming]$ paste p1.txt p2.txt|sed -n l
1\ta$
2\tb$
3\tc$

看到制表符了吧,它就是默认的间隔符。

2 上面的例子是两个文件的,那三个文件呢?

当然也可以了。看看例子吧:

[rocrocket@rocrocket programming]$ cat p3.txt
I
II
III
[rocrocket@rocrocket programming]$ paste p1.txt p2.txt p3.txt
1    a    I
2    b    II
3    c    III
[rocrocket@rocrocket programming]$ paste p3.txt p2.txt p1.txt
I    a    1
II   b    2
III  c    3

可见paste的结果是和文件列表的顺序有关的。

3 我不想用制表符来间隔,我想用星号(*),可以么?

行的!使用-d符号就可以设定间隔符,这和cut没有两样。看看例子:

[rocrocket@rocrocket programming]$ paste -d '*' p3.txt p2.txt p1.txt
I*a*1
II*b*2
III*c*3

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

4 我看过paste命令的man,里面提到了一个-s选项,我不懂是什么意思?

这个很好解释,继续上面的例子,看看这个命令:

[rocrocket@rocrocket programming]$ paste -s -d "*" p3.txt p2.txt p1.txt
I*II*III
a*b*c
1*2*3

呵呵,懂了吧,-s就是以每个文件为一个处理单元,将其中的所有行以-d设定的间隔符相连接组成一大行,输出到标准输出中。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HarkerYX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值