2013-07-01 2 views
0

У меня есть файл, как показано ниже, я хочу найти эту строку test name="" и удалить следующие 4 строки, включая первый test name="".Как удалить определенные строки в perl?

<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> 
+0

Какая строка является «этой линией». Кроме того, в Perl есть много способов сделать это, попробовав Google еще найти фрагменты кода? – steabert

+7

Рассматривали ли вы использование синтаксического анализатора XML? – TLP

+0

Эта строка-> user1954970

ответ

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. Может быть, пришло время learn it.

Смежные вопросы