码迷,mamicode.com
首页 > 其他好文 > 详细

文本操作2(paste,cat)

时间:2018-03-23 17:46:57      阅读:310      评论:0      收藏:0      [点我收藏+]

标签:paste   文本操作   

需求
  • 假如有两个文件name.txt和tel.txt,它们分别记录了员工的姓名和电话,如果需要把两个文件中的用户名和电话一一对应起来,怎么操作

    解决方案

  • 可以使用paste命令,它会把不同文件中的相同行连接起来
    [root@akuilinux01 shellXT]# cat -n name.txt
     1  曹操
     2  刘备
     3  孙权
     4  周瑜
     5  诸葛亮
     6  司马懿
     7  关羽
     8  张飞
     9
    [root@akuilinux01 shellXT]# cat -n tel.txt
     1  13088888888
     2  13066666666
     3  13044444444
     4  13022222222
     5  13011111111
     6  13055555555
     7  13033333333
     8  13077777777
    #使用冒号连接两个文件对应的行
    [root@akuilinux01 shellXT]# paste -d ‘:‘ name.txt tel.txt |cat -n
     1  曹操:13088888888
     2  刘备:13066666666
     3  孙权:13044444444
     4  周瑜:13022222222
     5  诸葛亮:13011111111
     6  司马懿:13055555555
     7  关羽:13033333333
     8  张飞:13077777777
     9  :

    讨论

  • paste命令正好与cut相反,可以把多个文件连接起来,-d参数指定分隔符,如果不指定默认TAB字符连接,如:
    [root@akuilinux01 shellXT]# paste name.txt tel.txt |cat -n
     1  曹操    13088888888
     2  刘备    13066666666
     3  孙权    13044444444
     4  周瑜    13022222222
     5  诸葛亮  13011111111
     6  司马懿  13055555555
     7  关羽    13033333333
     8  张飞    13077777777
     9
  • paste命令还可以把文件的内容与标准输入中的数据连接起来,如下面的命令把name.txt和tel.txt连接以后的结果有何name.txt连接在一起
    [root@akuilinux01 shellXT]# paste -d‘<‘ name.txt tel.txt |paste -d‘>‘ - name.txt |cat -n
     1  曹操<13088888888>曹操
     2  刘备<13066666666>刘备
     3  孙权<13044444444>孙权
     4  周瑜<13022222222>周瑜
     5  诸葛亮<13011111111>诸葛亮
     6  司马懿<13055555555>司马懿
     7  关羽<13033333333>关羽
     8  张飞<13077777777>张飞
     9  <>
  • 第二个paste命令的参数横杠-是用来表示从标准输入中读取数据,而此时的标准输入时从管道传递过来的上一个paste命令连接的结果,因此第二个paste命令会把上一次连接的结果与name.txt的内容进行再次连接。两次连接分别用字符<和>作为分隔符。

文本操作2(paste,cat)

标签:paste   文本操作   

原文地址:http://blog.51cto.com/akui2521/2090383

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!