免费注册 查看新帖 |

Chinaunix

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

找出重复的代码 [复制链接]

论坛徽章:
2
操作系统版块每日发帖之星
日期:2016-06-13 06:20:00操作系统版块每日发帖之星
日期:2016-06-14 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-01-11 20:40 |只看该作者 |倒序浏览
有一列代码,找出重复的:
Aars
Adams
Atp2
Atp2
Bcf
Def
Def
Grt3
Hgt3

要求找出
Atp2
Def

谢谢!

论坛徽章:
0
2 [报告]
发表于 2012-01-11 21:56 |只看该作者
  1. cat test.txt | uniq -d
复制代码

论坛徽章:
0
3 [报告]
发表于 2012-01-12 06:19 |只看该作者

  1. my %strs;

  2. while (<DATA>) {
  3.     chomp;
  4.     $strs{$_}++;
  5. }

  6. for (keys %strs) {
  7.     print if ($strs{$_} > 1);
  8. }
  9. __DATA__
  10. Aars
  11. Adams
  12. Atp2
  13. Atp2
  14. Bcf
  15. Def
  16. Def
  17. Grt3
  18. Hgt3
复制代码

论坛徽章:
13
双鱼座
日期:2013-10-23 09:30:05数据库技术版块每日发帖之星
日期:2016-04-20 06:20:00程序设计版块每日发帖之星
日期:2016-03-09 06:20:002015亚冠之塔什干火车头
日期:2015-11-02 10:07:452015亚冠之德黑兰石油
日期:2015-08-30 10:07:07数据库技术版块每日发帖之星
日期:2015-08-28 06:20:00数据库技术版块每日发帖之星
日期:2015-08-05 06:20:002015年迎新春徽章
日期:2015-03-04 09:57:09辰龙
日期:2014-12-03 14:45:52酉鸡
日期:2014-07-23 09:46:23亥猪
日期:2014-03-13 08:46:22金牛座
日期:2014-02-11 09:36:21
4 [报告]
发表于 2012-01-12 08:50 |只看该作者
还是uniq简单

论坛徽章:
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
5 [报告]
发表于 2012-01-12 19:53 |只看该作者
longbow0 发表于 2012-01-12 02:19
$strs{$_}++;


真巧妙啊,我怎么就想不到。

论坛徽章:
1
未羊
日期:2014-09-08 22:47:27
6 [报告]
发表于 2012-01-13 08:27 |只看该作者
本帖最后由 wxlfh 于 2012-01-13 14:58 编辑
  1. open my $fh,'<',"youfile";
  2. my (%str,%list,$i);
  3. while (<$fh>) {
  4.     chomp;
  5.     $str{$_}++;
  6.     if ($str{$_} > 1) {
  7.         $list{$_} = $i++ if not exists $list{$_};
  8.     }
  9. }
  10. close $fh;
  11. print "$_\n" for sort {$list{$a} <=> $list{$b}} keys %list;
复制代码
这个好处是可以保持重复出现字符的顺序。



论坛徽章:
0
7 [报告]
发表于 2012-01-13 08:52 |只看该作者
本帖最后由 lingyun9704 于 2012-01-13 08:52 编辑
rubyish 发表于 2012-01-12 19:53
真巧妙啊,我怎么就想不到。


   这是《perl语言编程》里提到的方法。

论坛徽章:
0
8 [报告]
发表于 2012-01-13 09:33 |只看该作者
uniq威武!

论坛徽章:
0
9 [报告]
发表于 2012-01-13 09:38 |只看该作者
wxlfh 发表于 2012-01-13 08:27


文件中若出现三个以上重复的就会多打印,参考修改:
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. my %str;
  5. while (<DATA>) {
  6.         chomp;
  7.         print "$_\n" if exists $str{$_} && $str{$_} == 1;
  8.         $str{$_}++;
  9. }
  10. __DATA__
  11. Aars
  12. Adams
  13. Atp2
  14. Atp2
  15. Bcf
  16. Def
  17. Def
  18. Def
  19. Grt3
  20. Hgt3
复制代码

论坛徽章:
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
10 [报告]
发表于 2012-01-13 22:44 |只看该作者
lingyun9704 发表于 2012-01-13 04:52
这是《perl语言编程》里提到的方法。


谢谢老兄指点~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP