免费注册 查看新帖 |

Chinaunix

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

grep读取重复行的问题求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-08 20:34 |只看该作者 |倒序浏览
my $rootDir =$ARGV[0];
my $date = $ARGV[1];
my $csvDir = $rootDir . $date ."/csv/";
my $output1 = $rootDir . $date . "/fielname_url_row.csv";
my $output2 = $rootDir . $date . "/url.csv";
my $chongfu = $rootDir . $date . "/chongfu.csv";
my @srcFiles = ();
find sub {push @srcFiles ,$File::Find::name if -f $_ && /\.csv$/i},$csvDir;
my $row = 0;
foreach my $csvFile(@srcFiles){
        print "$csvFile\n";
        $row++;
        my @lines = loadIgnoreTitle($csvFile);
        open RR, ">$output1";
        foreach my $line(@lines){
                my @fields = split(/,/,$line);
                my $url = $fields[6];       
                print RR $url . "\n" ;
        }
        close RR;
        open RH, ">$chongfu";
        my @urls = loadContainTitle($output1);
        my %count = ();
        my @chongfu = grep { $count{$_} == 2 }
                      grep{++$count{$_} > 1 } @urls;
        foreach my $line2(@chongfu){
                print RH $csvFile . $line2 . $row . "\n";
        }
        close RH ;
}




试了n遍 不知道问题出在哪。。。。。。大家帮忙看看
@crops = qw(wheat corn barley rice corn soybean hay
            alfalfa rice hay beets corn hay);
           my %count = ();
@duplicates = grep { $count{$_} == 2 }
              grep { ++$count{$_} > 1 } @crops;
print "@duplicates\n";

我是按照这个例子写的,例子运行都没问题啊。。。。。。。

论坛徽章:
0
2 [报告]
发表于 2011-12-09 10:26 |只看该作者
例子是重复2次的,你要求的也是重复2次吗?

论坛徽章:
0
3 [报告]
发表于 2011-12-09 14:35 |只看该作者
回复 2# 午夜凋零


    只要是重复的就要!

论坛徽章:
0
4 [报告]
发表于 2011-12-10 01:15 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2011-12-12 08:45 |只看该作者
回复 4# 芙蓉女侠

如果只有这一个条件,就会输出:
    corn rice hay corn hay

论坛徽章:
0
6 [报告]
发表于 2011-12-12 09:43 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7 [报告]
发表于 2011-12-12 09:52 |只看该作者
回复 6# 芙蓉女侠


    哦,这样啊!我以为它可以像找重复两次那样,直接一次就出结果呢,多谢啊!呵呵

论坛徽章:
0
8 [报告]
发表于 2011-12-12 10:09 |只看该作者
回复 4# 芙蓉女侠


    可是,女侠,我的问题是我自己写的那一段为什么得不到重复的结果呢!例子确实没问题啊.......

论坛徽章:
0
9 [报告]
发表于 2011-12-12 11:19 |只看该作者
回复 8# gis11rj
  1. my %count = ();
  2. my @chongfu = grep { $count{$_} == 2 }
  3.                          grep{++$count{$_} > 1 } @urls;
  4. foreach my $line2(@chongfu){
  5.     print RH $csvFile . $line2 . $row . "\n";
  6. }
复制代码
你把这段改成什么了?贴出来看看~

论坛徽章:
0
10 [报告]
发表于 2011-12-12 13:01 |只看该作者
回复 9# 午夜凋零


    find sub {push @srcFiles ,$File::Find::name if -f $_ && /\.csv$/i},$csvDir;
my $row = 0;
foreach my $csvFile(@srcFiles){
        print "$csvFile\n";
        $row++;
        my @lines = loadIgnoreTitle($csvFile);
        open RR, ">$output1";
        foreach my $line(@lines){
                my @fields = split(/,/,$line);
                my $url = $fields[6];        
                print RR $url . "\n" ;
        }
        close RR;
        open RH, ">$chongfu";
        my @urls = loadContainTitle($output1);
        my %count = ();
        my @chongfu = grep { $count{$_} == 2 }
                      grep{++$count{$_} > 1 } @urls;
        foreach my $line2(@chongfu){
                print RH $csvFile . $line2 . $row . "\n";
        }
        close RH ;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP