免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345
最近访问板块 发新帖
楼主: huang6894
打印 上一主题 下一主题

[文本处理] 匹配所有字母前的数字运算--大工程~ [复制链接]

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
41 [报告]
发表于 2013-11-15 18:42 |只看该作者
回复 38# damcool


    牛人!

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
42 [报告]
发表于 2013-11-15 18:42 |只看该作者
回复 39# yestreenstars


    谢谢您!

论坛徽章:
2
白羊座
日期:2013-11-18 19:52:42辰龙
日期:2014-09-07 07:46:06
43 [报告]
发表于 2013-11-15 21:42 |只看该作者
huang6894 发表于 2013-11-15 18:42
回复 38# damcool

希望不是为了研究转基因东东来害我们。。。。

论坛徽章:
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
44 [报告]
发表于 2013-11-16 02:05 |只看该作者
用perl琢磨了一下,我对perl不是很熟,只能写成这样了,第一题:
  1. #!/usr/bin/perl
  2. use 5.010;
  3. open(FILE,"use.txt") or die;
  4. $len = 10;
  5. while (<FILE>) {
  6.         split;
  7.         $sum = 0;
  8.         $N = $_[8] > 0 ? 1 : 2;
  9.         while ($_[5] =~ /(\d+)S/g) {
  10.                 push(@numbers,$1);
  11.         }
  12.         $length = @numbers;
  13.         if ($length > 1) {
  14.                 if ($numbers[0] >= $len) {
  15.                         printf "%s_%s\n%s\n+\n%s\n\n",$_[0],$N,substr($_[9],0,$numbers[0]),substr($_[10],0,$numbers[0]);
  16.                 }
  17.                 if ($numbers[1] >= $len) {
  18.                         printf "%s_%s\n%s\n+\n%s\n\n",$_[0],$N,substr($_[9],length($_[9])-$numbers[1]),substr($_[10],length($_[10])-$numbers[1]);
  19.                 }
  20.         } else {
  21.                 if ($numbers[0] >= $len) {
  22.                         if ($_[5] =~ /S$/) {
  23.                                 while ($_[5] =~ /(\d+)[MI]/g) {
  24.                                         $sum += $1;
  25.                                 }
  26.                         }
  27.                         printf "%s_%s\n%s\n+\n%s\n\n",$_[0],$N,substr($_[9],$sum,$numbers[0]),substr($_[10],$sum,$numbers[0]);
  28.                 }
  29.         }
  30.         undef @numbers;
  31. }
复制代码

论坛徽章:
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
45 [报告]
发表于 2013-11-16 02:32 |只看该作者
优化了一下第一题的awk:
  1. #!/usr/bin/awk
  2. {
  3.         s=0;t=$6;N=$9>0?1:2;
  4.         gsub(/[0-9]*[DMI]/,"",t);
  5.         l=split(t,a,"S");
  6.         if(l>2){
  7.                 if(a[1]>=10)printf "%s_%s\n%s\n+\n%s\n\n",$1,N,substr($10,1,a[1]),substr($11,1,a[1]);
  8.                 if(a[2]>=10)printf "%s_%s\n%s\n+\n%s\n\n",$1,N,substr($10,length($10)-a[2]+1),substr($11,length($11)-a[2]+1)
  9.         } else {
  10.                 if(a[1]>=10){
  11.                         gsub(/[0-9]*(D|S.*)/,"",$6);
  12.                         split($6,b,"[MI]");
  13.                         for(i in b)s+=b[i];
  14.                         printf "%s_%s\n%s\n+\n%s\n\n",$1,N,substr($10,s+1,a[1]),substr($11,s+1,a[1])
  15.                 }
  16.         }
  17. }
复制代码

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
46 [报告]
发表于 2013-11-18 09:30 |只看该作者
@damcool谢谢您~@yestreenstars由衷感谢大大的帮助~

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
47 [报告]
发表于 2013-11-18 14:40 |只看该作者
damcool 发表于 2013-11-15 14:42
希望不是为了研究转基因东东来害我们。。。。

希望不是{:2_179:}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP