• 《paste命令》-linux命令五分钟系列之二十


    《paste命令》-linux命令五分钟系列之二十

    本原创文章属于《Linux大棚》博客,博客地址为http://roclinux.cn。文章作者为rocrocket。

    为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅。

    ===

    [正文开始]


    在本系列上一篇文章中涉及到了cut命令(《cut命令》-linux命令五分钟系列之十九),本文章介绍的这个paste命令,是一个专门和cut对着干的命令,作用是将几个文件拼凑在一起。

    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	a$
    2	b$
    3	c$

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

    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设定的间隔符相连接组成一大行,输出到标准输出中。

    一句话:paste就是来组合文件的。

  • 相关阅读:
    康托(逆)展开(2015.8.6)
    高精度计算(2015.8.1)
    笔记(2015.8.1)
    筛法求素数(2015.7.30)
    欧几里德算法(2015.7.28)
    快速幂取模(2015.7.29)
    同余
    图论相关算法
    笔记(2015-07-24)
    ACM进阶计划
  • 原文地址:https://www.cnblogs.com/qionghua520/p/4385846.html
Copyright © 2020-2023  润新知