免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4693 | 回复: 6
打印 上一主题 下一主题

转置问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-09-23 16:22 |只看该作者 |倒序浏览
各位高手,小弟有个转置的问题想请教
file.txt中的文件如下:
ABO_1444  C G
ABO_1444  G G
ABO_1444  G G
ABO_1444  G G
ABO_1445  A A
ABO_1445  A G
ABO_1445  G G
ABO_1445  A A
ABO_1446  A G
ABO_1446  G G
ABO_1446  A A
ABO_1446  A A
ABO_1447  A G
ABO_1447  A G
ABO_1447  A G
ABO_1447  G G
想转置一下结果如下:
ABO_1444 C G G G G G G G
ABO_1445 A A A G G G A A
ABO_1446 A G G G A A A A
ABO_1447 A G A G A G G G
不知大侠们有何办法

论坛徽章:
13
丑牛
日期:2013-08-16 15:08:22技术图书徽章
日期:2013-11-26 10:13:40双鱼座
日期:2013-11-08 15:03:26戌狗
日期:2013-11-08 13:52:30技术图书徽章
日期:2013-11-05 14:06:30戌狗
日期:2013-10-31 11:45:42CU十二周年纪念徽章
日期:2013-10-24 15:41:34天秤座
日期:2013-10-11 14:55:08子鼠
日期:2013-09-26 19:36:35水瓶座
日期:2013-09-26 17:44:56午马
日期:2013-08-26 10:24:23丑牛
日期:2013-08-19 14:43:22
2 [报告]
发表于 2013-09-23 17:06 |只看该作者
  1. awk '{a[$1]=a[$1]?a[$1]" "$3" "$4:$3" "$4}END{for(i in a)print i,a[i]}' file.txt
复制代码

论坛徽章:
8
双子座
日期:2013-08-31 07:37:12金牛座
日期:2013-09-09 18:49:12处女座
日期:2013-09-23 11:43:14处女座
日期:2013-10-09 19:48:21狮子座
日期:2014-03-24 18:22:12丑牛
日期:2014-04-22 22:07:51申猴
日期:2014-06-12 21:54:13双鱼座
日期:2014-06-13 21:52:31
3 [报告]
发表于 2013-09-23 18:09 |只看该作者
  1. perl -lane '$h{$F[0]}.=" $F[1] $F[2]";END{print "$_ $h{$_}" for(sort keys %h)}' b
复制代码
  1. #!/usr/bin/perl

  2. use 5.010;

  3. while (<DATA>) {
  4.     ($str,$str1,$str2) = split /\s+/;
  5.     $h{$str} .= " $str1 $str2";
  6. }

  7. for $k(sort keys %h) {
  8.     say "$k $h{$str}"

  9. }


  10. __DATA__
  11. ABO_1444  C G
  12. ABO_1444  G G
  13. ABO_1444  G G
  14. ABO_1444  G G
  15. ABO_1445  A A
  16. ABO_1445  A G
  17. ABO_1445  G G
  18. ABO_1445  A A
  19. ABO_1446  A G
  20. ABO_1446  G G
  21. ABO_1446  A A
  22. ABO_1446  A A
  23. ABO_1447  A G
  24. ABO_1447  A G
  25. ABO_1447  A G
  26. ABO_1447  G G
复制代码
回复 1# 我收点倦


   

论坛徽章:
0
4 [报告]
发表于 2013-09-23 20:31 |只看该作者
回复 3# kernel69
大侠好贴心,居然给出了两种方式,拜谢了!!!


   

论坛徽章:
0
5 [报告]
发表于 2013-09-23 20:32 |只看该作者
回复 2# 代号:军刀
谢谢大侠,可以运行的,不过结果好像有点小问题

   

论坛徽章:
13
丑牛
日期:2013-08-16 15:08:22技术图书徽章
日期:2013-11-26 10:13:40双鱼座
日期:2013-11-08 15:03:26戌狗
日期:2013-11-08 13:52:30技术图书徽章
日期:2013-11-05 14:06:30戌狗
日期:2013-10-31 11:45:42CU十二周年纪念徽章
日期:2013-10-24 15:41:34天秤座
日期:2013-10-11 14:55:08子鼠
日期:2013-09-26 19:36:35水瓶座
日期:2013-09-26 17:44:56午马
日期:2013-08-26 10:24:23丑牛
日期:2013-08-19 14:43:22
6 [报告]
发表于 2013-09-23 20:41 |只看该作者
回复 5# 我收点倦


    眼睛花了,看错看成4列,改一下。
  1. awk '{a[$1]=a[$1]?a[$1]" "$2" "$3:$2" "$3}END{for(i in a)print i,a[i]}' file.txt
  2. ABO_1444 C G G G G G G G
  3. ABO_1445 A A A G G G A A
  4. ABO_1446 A G G G A A A A
  5. ABO_1447 A G A G A G G G
复制代码

论坛徽章:
0
7 [报告]
发表于 2013-09-23 20:49 |只看该作者
回复 6# 代号:军刀
恩恩,这回可以了,多谢多谢


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP