高分求perl高手!如何求出两个文件中重复数据的个数?高手指点

wings2004 2004-05-08 10:27:36
其中一个文件部分内容如下:
3561,17158,1
5511,8335,1
209,18497,3
... ...
如果另一个文件的内容:
3561,17158,4
5511,8335,6
209,18497,39
1239,600,2
1,17159,1
4621,9741,1
... ...输出的结果应为:
3561,17158,1 or 4
5511,8335,6 or 1
209,18497,39 or 3
三个重复的。
如果两个文件中前两个数相同视为一个重复如:3561,17158重复
文件大概有一万多行


...全文
147 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
liu22 2004-09-03
  • 打赏
  • 举报
回复
open(INFILE1,"temp1.txt");
while(<INFILE1>)
{
$hash{$1} .= " or $2" if($_=~/(\d+,\d+),(\d+)/);
}
close INFILE1;

open(INFILE2,"temp2.txt");
while(<INFILE2>)
{
$hash{$1} .= " or $2" if($_=~/(\d+,\d+),(\d+)/);
}
close INFILE2;

foreach $key(keys %hash)
{
if ($hash{$key} =~ /( or \d+){2,}/)
{
($dump,$hash{$key}) =($hash{$key} =~ /^( or )(.*)/);
print "$key,$hash{$key}\n";
}
}

以上代码适应同一文件有重复数据的情况。

运算速度尚可,两个三万行的文件35秒运行完毕(CII 1G,192M,WINXP)。
julyice 2004-09-01
  • 打赏
  • 举报
回复
先将一个文件中的数据读到hash数组中
while(<INFILE>)
{
$hash{$1}=$2 if($_=~/(\d+,\d+),(\d+)/);
}
然后读另一个文件输出
while(<INFILE2>)
{
if($_=~/(\d+,\d+),(\d+)/)
{
print "$_" if(exists $hash{$1});
}
}
wings2004 2004-05-08
  • 打赏
  • 举报
回复
要代码

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧