免费注册 查看新帖 |

Chinaunix

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

如何实现类似cut命令的功能? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-07-26 10:52 |只看该作者 |倒序浏览
如下,获得一段文件:
134834        135061        132606        132833        228        228        99.56        45038604        170087        0.00        0.13        chromosome01        scaffold714
136459        137460        134231        135231        1002        1001        95.31        45038604        170087        0.00        0.59        chromosome01        scaffold714
137635        137751        141053        141169        117        117        100.00        45038604        170087        0.00        0.07        chromosome01        scaffold714
137751        138620        169218        170087        870        870        99.54        45038604        170087        0.00        0.51        chromosome01        scaffold714
138551        141270        1        2738        2720        2738        98.80        45038604        656618        0.01        0.42        chromosome01        scaffold186
141267        155629        3776        18081        14363        14306        98.69        45038604        656618        0.03        2.18        chromosome01        scaffold186
163481        163659        26102        26280        179        179        100.00        45038604        656618        0.00        0.03        chromosome01        scaffold186
180087        180519        42649        43085        433        437        98.86        45038604        656618        0.00        0.07        chromosome01        scaffold186
183829        184574        20400        19647        746        754        98.14        45038604        550720        0.00        0.14        chromosome01        scaffold260
185071        189393        65481        69775        4323        4295        96.10        45038604        656618        0.01        0.65        chromosome01        scaffold186
189962        190173        70360        70572        212        213        99.06        45038604        656618        0.00        0.03        chromosome01        scaffold186
190848        195471        70607        75224        4624        4618        98.68        45038604        656618        0.01        0.70        chromosome01        scaffold186
如何用Perl实现取出每行最后一段字符串,并去掉重复,最终输出到文件?知道用管线命令可以实现,但怎样用perl呢?多谢指教!!!

论坛徽章:
3
摩羯座
日期:2013-09-04 12:01:36申猴
日期:2013-10-23 12:12:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34
2 [报告]
发表于 2013-07-26 11:36 |只看该作者
本帖最后由 grshrd49 于 2013-07-26 16:10 编辑

open II,"in.txt";
open OO."out.txt";
while(<II>){
@aa = split;
$hash{$aa[$#aa]}=1;
}
print OO "$_\n" for(sort {$a<=>$b} keys %hash);

论坛徽章:
0
3 [报告]
发表于 2013-07-26 11:45 |只看该作者
  1. perl -lne 'print $1 if !@U{/(\S+)$/}++' data > new
复制代码

论坛徽章:
0
4 [报告]
发表于 2013-07-26 13:45 |只看该作者
回复 2# grshrd49

回复 3# cinanine


    多谢两位,受教啦!

论坛徽章:
0
5 [报告]
发表于 2013-07-26 14:03 |只看该作者
回复 2# grshrd49
但是这样并没有去掉重复?


   

论坛徽章:
0
6 [报告]
发表于 2013-07-26 14:06 |只看该作者
追加:如上的文本要求最终输出
scaffold714
scaffold168
scaffold260
scaffold168

论坛徽章:
3
摩羯座
日期:2013-09-04 12:01:36申猴
日期:2013-10-23 12:12:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34
7 [报告]
发表于 2013-07-26 14:08 |只看该作者
回复 6# tideyzhang


加了hash,现在就去重了

论坛徽章:
3
摩羯座
日期:2013-09-04 12:01:36申猴
日期:2013-10-23 12:12:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34
8 [报告]
发表于 2013-07-26 14:12 |只看该作者
回复 6# tideyzhang


现在加了hash 就去重了

论坛徽章:
0
9 [报告]
发表于 2013-07-26 14:25 |只看该作者
回复 8# grshrd49

确实可以去重,但不能保证顺序,并且是全部的重复都去掉了,要求的是根据上下文来确定,可以出现上下形式是ABACB等,只要不出现AABBB这样的连续就行了


   

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
10 [报告]
发表于 2013-07-26 16:02 |只看该作者
回复 1# tideyzhang
  1. perl -anle '$l=$F[$#F]; undef %h if ! exists $h{$l}; print $l if ! $h{$l}++'
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP