免费注册 查看新帖 |

Chinaunix

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

大家帮忙看这个问题怎么解决 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-11-27 23:36 |只看该作者 |倒序浏览
有一个文件,内容如下:

    original1_for original2_for ND1 ND2 ND3 ND4 ND5
name1 A G AB AA BB BA NN
name2 T C BB BB AA NN AB
name3 G C AA BA NN BB AB
name4 C G BA AA BB NN AB
name5 A C AB BB NN BA AB

对每行来讲,从第四列开始,后面的字母组合均是替换过后的,替换的原则是:original1_for="A",original2_for="B"。现在想还原回去,即最终想要的结果如下(N就替换为0(零)):

    original1_for original2_for ND1 ND2 ND3 ND4 ND5
name1 A G AG AA GG GA 00
name2 T C CC CC TT 00 TC
name3 G C GG CG 00 CC GC
name4 C G GC CC GG 00 CG
name5 A C AC CC 00 CA AC

请大家帮帮忙,看这个问题该如何解决

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
2 [报告]
发表于 2013-11-28 00:36 |只看该作者
看看:
  1. #!/usr/bin/perl
  2. my %back = qw/A 1 B 1 N 0/;
  3. print scalar <DATA>;
  4. while (<DATA>) {
  5.     my ( $N, $A, $S, $B, $T ) = /^(\S+\s+)(.)(\s+)(.)(.*)/s;
  6.     @back{qw/A B/} = ( $A, $B );
  7.     $T =~ s/(\S)/$back{$1}/g;
  8.     print $N, $A, $S, $B, $T;
  9. }

  10. __DATA__
  11.     original1_for original2_for ND1 ND2 ND3 ND4 ND5
  12. name1 A G AB AA BB BA NN
  13. name2 T C BB BB AA NN AB
  14. name3 G C AA BA NN BB AB
  15. name4 C G BA AA BB NN AB
  16. name5 A C AB BB NN BA AB
复制代码

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
3 [报告]
发表于 2013-11-28 10:01 |只看该作者
  1. #!/usr/bin/perl

  2. print scalar <DATA>;

  3. while (<DATA>) {
  4.         split;
  5.         for ($i=3;$i<@_;$i++) {
  6.                 $_[$i] =~ s/A/$_[1]/g;
  7.                 $_[$i] =~ s/B/$_[2]/g;
  8.                 $_[$i] =~ s/N/0/g;
  9.         }
  10.         join @_;
  11.         print "@_\n";
  12. }

  13. __DATA__
  14.     original1_for original2_for ND1 ND2 ND3 ND4 ND5
  15. name1 A G AB AA BB BA NN
  16. name2 T C BB BB AA NN AB
  17. name3 G C AA BA NN BB AB
  18. name4 C G BA AA BB NN AB
  19. name5 A C AB BB NN BA AB
复制代码

论坛徽章:
0
4 [报告]
发表于 2013-11-28 13:11 |只看该作者
回复 2# rubyish
谢啦!
赞一个!
非常棒!

   

论坛徽章:
0
5 [报告]
发表于 2013-11-28 13:12 |只看该作者
回复 3# yestreenstars
谢谢!
还是集思义广呀!

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP