CVS ファイルと比較する必要がある Oracle ファイルがありますが、差分の一部として最初の行を無視したいファイルがたくさんあるという問題があります。各ファイルを開き、最終出力'CREATE OR REPLACE PACKAGE "TRON"."SOME_PACKAGE" IS'
が'CREATE OR REPLACE PACKAGE SOME_PACKAGE IS'
. 私が抱えている問題は、ステートメントが複数の行にまたがる可能性があることです。そのため、次のような状況を考慮する必要があります。'CREATE OR REPLACE "TRON"."SOME_PACKAGE"
IS'
私のアプローチ (これは Jenkins の仕事の一部であるため) は、ワークスペース内のすべてのファイルをループして、この基準を満たすすべてのファイルを変更することです。その後、 と を使用している既存の Perl スクリプトを使用できFile::Compare
ますText::Diff::Table
。
コマンド文字列が複数行にまたがるシナリオをまだ扱っていないため、Zaid のソリューションでテストしてきましたが、ほとんど成功していません。(私の変更):
use strict;
use warnings;
use Tie::File;
use Data::Dumper;
my @array;
tie @array, 'Tie::File', 'c:\cb_k_check_recon_mma.sps' or die "Unable to tie file";
my %unwanted = map { $_ => 1 }
map { $_-1..$_-4, $_, $_+2 .. $_+4 }
grep { $array[$_] =~ /^CREATE.*[IS|AS]$/ }
0 .. $#array ;
print Dumper \%unwanted;
@array = map { $array[$_] } grep { ! $unwanted{$_} } 0 .. $#array;
print Dumper \@array;
untie @array;