Perl 语言如何完成两个TXT文件特定列的大小比较?

有2个TXT文件,每个文件分别由3列,行数有4000行左右。每个文件的前两列是字符,第三列是数字。想要比较2个文件第三列的大小,需要提取文件1中第三列比文件2大的那些行,... 有2个TXT文件,每个文件分别由3列,行数有4000行左右。
每个文件的前两列是字符,第三列是数字。
想要比较2个文件第三列的大小,需要提取文件1中第三列比文件2大的那些行,输出到新的TXT文件。

文件例如:
FILE1

aaaa bbbbbb 33
asda adsfdd 56
aere asdtte 77

FILE2

qqqw alsdkj 99
asdq asdddd 1
asdw oiuweu 3

谢谢高手啊。。。:)
要比较的是对应的行:)
展开
 我来答
ba_du_co
2012-05-29 · TA获得超过937个赞
知道小有建树答主
回答量:191
采纳率:0%
帮助的人:276万
展开全部
my ( @m, $i ) = qw( < < > );
my ( $x, $y, $z ) = map { open my ($f), $m[ $i++ ], $_; $f } 'file1', 'file2', 'file3';
select $z;
(split)[2] > ( split /\s+/, <$y> )[2] ? print : undef while <$x>;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wegkiwong
2012-06-06 · TA获得超过516个赞
知道答主
回答量:96
采纳率:0%
帮助的人:53.5万
展开全部
open(IN,"file1.txt")||die"......1\n";
open(IM,"file2.txt")||die"......2\n";
open(OUT,">result.txt");
while(chomp($raw1=<IN>) and chomp($raw2=<IM>))
{
@arr1=split(/\s+/,$raw1);
@arr2=split(/\s+/,$raw2);
if($arr1[2]>$arr2[2])
{
print OUT $raw1,"\n";
}
}
close(IN);
close(IM);
close(OUT);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
0o木目心o0
2012-05-28 · 超过12用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:36万
展开全部
你所说的对应行是指前两列是一样的么?是的话,我就帮你写,用哈希就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
835087020ccc
2012-05-28 · TA获得超过914个赞
知道小有建树答主
回答量:620
采纳率:50%
帮助的人:278万
展开全部
用hash表 很简单的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳光上的桥
2012-05-27 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65813
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
open(FILE1,"FILE1");
open(FILE2,"FILE2");
open(FILE3,">FILE3");
while ($s1=<FILE1>){
$s2=<FILE2>;
($t,$t,$n1)=split(/\s+/,$s1);
($t,$t,$n2)=split(/\s+/,$s2);
print FILE3 $s1 if ($n1 > $n2);
}
close(FILE1);
close(FILE2);
close(FILE3);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式