paste and join (Linux)

paste格式:
paste -d -s file1 file2
paste将按行将不同文件行信息放在一行。缺省情况下,paste连接时,用空格或tab键分割新行中不同文件,但是可以用-d来指定分隔符。
选项含义如下:
-d    指定不同于空格或tab键的域分隔符。但是请注意:分隔符此时限定为一个字符,如果给定多个字符,那么将依次使用。
另外,-d还有一项功能就是指定每行含有的元素个数,比如:
ls | paster -d ""- - - 就是指每行含有三个元素。要是所有的内容归结为一行,那么用下面的
-s  作用是将每个文件的内容合并为一行,并列出。

Example:
[10:38:09@test]$ cat aa
a1
a2
a3
a4
a5
[10:38:19@test]$ cat bb
b1
b2
b3
b4
b5
[10:41:43@test]$ cat  cc
c1
c2
c3
c4
c5
[10:38:21@test]$ paste aa bb  #合并两个文件,默认分隔符为tab键或者空格
a1      b1
a2      b2
a3      b3
a4      b4
a5      b5
[10:38:30@test]$ paste bb aa #指定先后合并
b1      a1
b2      a2
b3      a3
b4      a4
b5      a5
[10:38:36@test]$ paste -d@ aa bb #指定分隔符合并
a1@b1
a2@b2
a3@b3
a4@b4
a5@b5
[10:42:02@test]$ paste aa bb cc  #可以合并多个文件,但是速度很慢
a1      b1      c1
a2      b2      c2
a3      b3      c3
a4      b4      c4
a5      b5      c5
[10:42:12@test]$ paste -d"@#" aa bb cc #指定多个分割符的情况,会依次排列使用
a1@b1#c1
a2@b2#c2
a3@b3#c3
a4@b4#c4
a5@b5#c5
[10:40:55@test]$ ls  #下一种情况,直接从管道符中提取数据
aa  bb  cc  dd  ee  ff  gg
[10:40:48@test]$ ls | paste -d" "   #默认情况是一行中指含有一个数据
aa
bb
cc
dd
ee
ff
gg
[10:41:14@test]$ ls | paste -d" " - - - -  #指定每行中含有元素的个数
aa bb cc dd
ee ff gg
[10:41:22@test]$ ls | paste -s  #一行显示参数
aa      bb      cc      dd      ee      ff      gg

注1:paste对我来说的作用在于替代join来合并有共同列的文件合并。具体操作是,排列好对应的列,然后合并,并用cut或者awk用管道符提取所需要的字段。
cut和awk提取字段的区别在于,cut没有对列排序的功能,但提取数据显示很快速并可以简写,但是awk就不能简写,必须一个字段一个字段的慢慢的弄,弄死你,但是awk的好处也非常明显,就是排序功能,下面是一个MANTOU的一个例子的命令行:
paste fre.xls fre2.xls | awk '{print $1"\t"$2"\t"$3"\t"$4"\t"$8"\t"$9"\t"$5"\t"$15"\t"$6"\t"$16"\t"$7}' > anno.fre.xls
注2:paste和join都是对文件进行合并,join的好处在于可以指定字段进行匹配,并找出相同或者不同的对应元素,但是缺点是我还没有完全能使用join,具体是(1)分隔符不能灵活使用,比如tab就加不上(2)指定字段的时候老师报错(3)-v寻找不同值测试失败。
所以,现在paste基本能代替join的功能:直接合并对应文件,再使用awk或者其他linux命令进行操作。

期待高手出现,解决join的问题。


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值