作者rosepain (掘)
看板Perl
標題Re: [問題] 檔案內容比對
時間Mon Apr 19 22:01:00 2010
※ 引述《jammy8 (jay)》之銘言:
: 請教前輩們
: 如果我有兩個檔案內容要做差異比對,
: 比如兩個檔案分別為/tmp/20100414.log 和 /tmp/20100413.log
: 若有更新的行才做輸出到新的檔案,
: 請問該用何種方式會較好?
: 因為我是想到用shell的diff去做比對,
: 但比對後的檔案在行會有 > 的輸出,
: 而我不希望有 > 的輸出,
: 所以希望前輩們能給予指教...謝謝
我會用二個Hash去比較,大概如下
open( F, 'file1');
my @lines1=<F>;
close(F);
my $h1 = undef;
my $ndx = 0;
while (defined $lines1[$ndx])
{
chomp $lines1[$ndx];
$h1->{$lines1[$ndx]} = 1;
$ndx++;
}
open( F,'file2');
my @lines2=<F>;
close(F);
my $h2 = undef;
my $ndx = 0;
while(defined $lines2[$ndx])
{
chomp $lines2[$ndx];
$h2->{$lines[$ndx]} = 1;
$ndx++;
}
open( F,'>'.'OF.TXT');
foreach my $key( keys %$h1 )
{
if ( !defined $h2->{$key} ) {
print F $key.chr(0xd).chr(0xa);
$h2->{$key} = 99;
}
}
foreach my $key( keys %$h2 )
{
if ( $h2->{$key} == 1 )
{
if ( !defined $h1->{$key} )
{
print F $key.chr(0xd).chr(0xa);
}
}
}
close(F);
大概就將...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.165.231.31
→ kornelius:為什麼要寫這麼多行呢 *ponders* 04/20 04:23
推 kornelius:用 grep 把有 > 的行拿出來然後 sed 拿掉就好啦 XD 04/20 04:29