次のようなファイルがあります。この行を検索してtest name=""
、最初の行を含む次の 4 行を削除しtest name=""
ます。
<test name="FT S_CREATE_DELETE_JOB">
<class name="11 .98. FT S_CREATE_DELETE_JOB">
COMPLETED
<test name="">
<class name="11.98.">
</class>
</test>
次のようなファイルがあります。この行を検索してtest name=""
、最初の行を含む次の 4 行を削除しtest name=""
ます。
<test name="FT S_CREATE_DELETE_JOB">
<class name="11 .98. FT S_CREATE_DELETE_JOB">
COMPLETED
<test name="">
<class name="11.98.">
</class>
</test>
ほとんどの言語では、ファイルを直接操作することはありません。代わりに、2 番目のファイルを開き、そこに結果を書き込み、2 番目のファイルの名前を最初のファイルに変更して、元のファイルを削除します。
use strict;
use warnings;
use autodie;
open my $input_fh, "<", "input.txt";
open my $output_fh, ">", "output.txt";
while ( my $line = <$input_fh> ) {
chomp;
last if $line eq '<test name="">';
print {$output_fh} "$line\n";
}
close $input_fh;
close $output_fh;
unlink "input.txt";
rename "output.txt", "input.txt";
これはかなり基本的なことなので、Perl を知らないと思います。たぶんそれを学ぶ時が来ました。