免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
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
21 [报告]
发表于 2013-11-15 13:54 |只看该作者
回复 18# huang6894
还有我14楼问的问题呢~

   

论坛徽章:
771
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
22 [报告]
发表于 2013-11-15 13:55 |只看该作者
压力好大,表示看懂需求要一段时间,
今天上班比较忙,只能拜读各位的代码了。

论坛徽章:
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
23 [报告]
发表于 2013-11-15 14:09 |只看该作者
回复 19# yestreenstars


    已修正~是4S的!对不起呀,测试数据没弄好~

论坛徽章:
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
24 [报告]
发表于 2013-11-15 14:10 |只看该作者
先发第一种结果,多个S的处理看得不是很明白:
  1. [root@localhost ~]# cat i
  2. FCD2FEHACXX:8:2301:1875:46038#79_118    99      chr1    112365  0       16M1D70M2S      =       112469  192     CTTCTCCAACCAAATTAGGAACAATTATATGGCCACATAGTATCGAATCAAGTTTATAATTTTAAAATAATTGGGAGATTTTGTTGTT        ?A@@@A@@@A@@AA@ABA@AAAA@A?@@@A$AA@AA@@?A@?@A>@A@AAAA=AA?A@AAAAAAAAA@?A@ABBB@C=@AAAC@AB?A
  3. FCD2FEHACXX:8:1104:6915:94857#79_118    147     chr1    73823   37      4S84M   =       73710   -201    AGCTGTAGAGAGAGGCACCCTTTTTTTTTTTTTTAATTATACTTTAAGTTTTAGGGTACATGTGCACCTTGTGCAGGTTAGTTACATA        ??A?>=<879<>=6/2=AA@AAAAAAAAAAAA?A@A?@@?BAA?BAAAAA?A@@A?@A@@B@AA?ABAAA@BB@@AA@AAA@?@??>@
  4. FCD2FEHACXX:8:2307:11230:38678#79_118   14      chr1    37911759        29      44M4I13M4D8M1I13M5S     =       37911601        -240    CCCTCTGCCTCTCCTTCTCTTTACCTCCCTCCCTCTTTCCCTCTTTCCCTCTCTCTCTCCCTCCCTCTCTTCCTCTCTCTCTCCCTCT        ABA??<@AA?C@A=??CABA@<1AA=AAA>BABAA@?@BBCAC@@=A@A@?=?@A@B=AAA=@AB@C@AA@AB@A?A@A@A@A@@>AA
  5. [root@localhost ~]# awk '{s=0;n=gensub(/.*(^|[^0-9])([0-9]*)S.*/,"\\2",$6);gsub(/[0-9]*D|[0-9]*S.*/,"",$6);split($6,a,"[MI]");for(i in a)s+=a[i];N=$9>0?1:2;print $1"_"N"\n"substr($10,s+1,n)"\n+\n"substr($11,s+1,n)"\n"}' i
  6. FCD2FEHACXX:8:2301:1875:46038#79_118_1
  7. TT
  8. +
  9. ?A

  10. FCD2FEHACXX:8:1104:6915:94857#79_118_2
  11. AGCT
  12. +
  13. ??A?

  14. FCD2FEHACXX:8:2307:11230:38678#79_118_2
  15. CCTCT
  16. +
  17. @@>AA

  18. [root@localhost ~]#
复制代码

论坛徽章:
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
25 [报告]
发表于 2013-11-15 14:34 |只看该作者
关于你说的特殊情况(有多个S的)能否给个案例?

论坛徽章:
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
26 [报告]
发表于 2013-11-15 14:34 |只看该作者
回复 22# yestreenstars


    大大,有个问题~你的脚本处理测试数据是通过的~可是不知道为什么,和测试数据一样的实际文本却不能处理呢?

方便的话,帮我看看我的数据可以么?谢谢你了!!!
use.zip (148.74 KB, 下载次数: 14)
  1. awk '{s=0;n=gensub(/.*(^|[^0-9])([0-9]*)S.*/,"\\2",$6);gsub(/[0-9]*D|[0-9]*S.*/,"",$6);split($6,a,"[MI]");for(i in a)s+=a[i];N=$9>0?1:2;print $1"_"N"\n"substr($10,s+1,n)"\n+\n"substr($11,s+1,n)"\n"}' c.txt
  2. FCD2FEHACXX:8:2301:1875:46038#79_118_1
  3. TT
  4. +
  5. ?A

  6. FCD2FEHACXX:8:1104:6915:94857#79_118_2
  7. AG
  8. +
  9. ??

  10. FCD2FEHACXX:8:2307:11230:38678#79_118_2
  11. CCTCT
  12. +
  13. @@>AA

  14. awk '{s=0;n=gensub(/.*(^|[^0-9])([0-9]*)S.*/,"\\2",$6);gsub(/[0-9]*D|[0-9]*S.*/,"",$6);split($6,a,"[MI]");for(i in a)s+=a[i];N=$9>0?1:2;print $1"_"N"\n"substr($10,s+1,n)"\n+\n"substr($11,s+1,n)"\n"}' use.txt |le
  15. FCD2FEHACXX:8:1203:10339:145301#79_118_2

  16. +


  17. FCD2FEHACXX:8:1202:16979:45106#79_118_2

  18. +


  19. FCD2FEHACXX:8:1205:12796:100011#79_118_1

  20. +


  21. FCD2FEHACXX:8:1201:19531:81831#79_118_2

  22. +



复制代码

论坛徽章:
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
27 [报告]
发表于 2013-11-15 14:43 |只看该作者
本帖最后由 huang6894 于 2013-11-15 14:52 编辑

回复 23# yestreenstars


    比如:
  1. FCD2FEHACXX:8:1303:20504:42704#79_118   99      chr1    15317774        29      20S33M35S  =       15317807        119     CCGAGAGGCGGAGGTTGCAGTGAGCCTAGGTCGCACCACTGCACTCCAGCCTGGTGACAAAGAGAGACTCTGTGTCAAAAAAAAGAAG        ?@<AA@BAA>A@AA>@AA@B?A@AA@@ABA?B>C@CA@CACC@BACA@CCAACB<AAC?AABABAA@CACAC?C?@@AAAAAAAC@AC        BD:Z:LLLLMMMMLLLLMMLLLLLMLMLMLLLLLMLLLLLLLMLLMLLLLLMMMLLLMMLMLLLLGLMMMMMLLLLMMMMLLLGGGGGGLMLL   MD:Z:11G17A3    PG:Z:MarkDuplicates.4   RG:Z:FAMILY_all XG:i:0  BI:Z:OOOOOOOOOOOOOONOOOOOOOOOOOOOOONOOOOOOOOOOOOOONOOOOOOOONOOOOONNOOOOOOONOOOOOOOONNNNNNNOON   AM:i:29 NM:i:2  SM:i:29 XM:i:2  XO:i:0  MQ:i:29 XT:A:M
复制代码
这样的
希望可以输出:

  1. FCD2FEHACXX:8:1303:20504:42704#79_118_1
  2. CCGAGAGGCGGAGGTTGCAG
  3. +
  4. ?@<AA@BAA>A@AA>@AA@B

  5. FCD2FEHACXX:8:1303:20504:42704#79_118_1
  6. GTGACAAAGAGAGACTCTGTGTCAAAAAAAAGAAG
  7. +
  8. B<AAC?AABABAA@CACAC?C?@@AAAAAAAC@AC
复制代码

论坛徽章:
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
28 [报告]
发表于 2013-11-15 16:17 |只看该作者
  1. awk '{s=0;t=$6;N=$9>0?1:2;gsub(/[0-9]*[DIM]/,"",t);l=split(t,a,"S");if(l>2){print $1"_"N"\n"substr($10,1,a[1])"\n+\n"substr($11,1,a[1])"\n\n"$1"_"N"\n"substr($10,length($10)-a[2]+1)"\n+\n"substr($11,length($11)-a[2]+1)}else{gsub(/[0-9]*D|[0-9]*S.*/,"",$6);split($6,b,"[MI]");for(i in b)s+=b[i];print $1"_"N"\n"substr($10,s+1,a[1])"\n+\n"substr($11,s+1,a[1])"\n"}}'
复制代码
不知道有没有bug,试一下吧~

论坛徽章:
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
29 [报告]
发表于 2013-11-15 16:30 |只看该作者
回复 26# yestreenstars


    星辰大大真是神一样的存在呀!!!!
    大大,我还想问一下,如果我不想处理那些匹配出来的第10、11列字符数小于10个的,如果小于10个不输出这一行,怎么改??

论坛徽章:
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
30 [报告]
发表于 2013-11-15 16:39 |只看该作者
你的第二种结果文件如果有2个S的又怎么处理?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP