DATA 전문가로 가는 길

[Perl] 문자열 비교 String Diff [ 파일1을 기준으로 파일2에서 중복 값을 출력 ] 본문

Programming/Perl

[Perl] 문자열 비교 String Diff [ 파일1을 기준으로 파일2에서 중복 값을 출력 ]

EstenPark 2009. 7. 4. 17:10


원본 파일과 비교 대상 파일에서 중복 되는 값을 찾는 방법입니다. 아래는 그러한 해결책을 찾고자 만들었고, 자세한 내용은 소스를 토대로 진행 해보도록 하겠습니다. 여기에서 중요한 건 원본 파일을 기준으로 대상 파일을 검출 한다는 것입니다.

1. 원본 데이터 목록

 A.TXT 고유번호 목록
ABDC1234
ABDC1235
ABDC1236
ABDC1237
ABDC1238
..
..
B.TXT 고유번호 목록 
ABDC1231
ABDC1232
ABDC1233
ABDC1234
ABDC1235
..

3. 두 개 파일 문자열 비교 

  - a.txt와 b.txt를 각 배열에 등록

  - 2차원 배열을 구성하여 기준이 되는 배열과 조회를 해야 할 배열을 루프

  - 데이터가 중복 된 값은 push를 이용하여 배열에 삽입


 
#!/usr/bin/perl

use strict;
use warnings;


my $data_log1 = "a.txt";
my $data_log2 = "b.txt";

open(my $FH1, '<',  $data_log1) || die $!;
my @scourt_log1 = <$FH1>;

close $FH1;

open(my $FH2, '<',  $data_log2) || die $!;
my @scourt_log2 = <$FH2>;

close $FH2;


my $count1 = @scourt_log1;
my $count2 = @scourt_log2;


print "==========================================\n";
print "A File Count : $count1 \nB File Count : $count2 \n";
print "-----------------------------------------\n";

my $chk;
my @result;
foreach my $i ( @scourt_log1 ) {
	foreach my $j ( @scourt_log2 ) {
		if ($i eq $j ) {
			$chk = $j;
			push (@result, $chk);
		} 
	}
	$count1--;
}

print "==========================================\n";
print "중복 데이터 결과 \n";
print "-----------------------------------------\n";
foreach my $list (@result ) {
	
	print $list;
}
print "-----------------------------------------\n";

Comments