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"; |