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
谢谢高手啊。。。:)
要比较的是对应的行:) 展开
每个文件的前两列是字符,第三列是数字。
想要比较2个文件第三列的大小,需要提取文件1中第三列比文件2大的那些行,输出到新的TXT文件。
文件例如:
FILE1
aaaa bbbbbb 33
asda adsfdd 56
aere asdtte 77
FILE2
qqqw alsdkj 99
asdq asdddd 1
asdw oiuweu 3
谢谢高手啊。。。:)
要比较的是对应的行:) 展开
5个回答
展开全部
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>;
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>;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
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);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你所说的对应行是指前两列是一样的么?是的话,我就帮你写,用哈希就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用hash表 很简单的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
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);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询