2017-05-24 5 views
0

ファイル内の特定の行を更新する必要があります。Perlを使用してファイル内の行を更新するにはどうすればよいですか?

正規表現を使用しています。最後に、次の行に行きます。 ファイルdog2catは含まれています

This example 
The dog is drinking. 
It is drinking milk. 

マイコード:

open(FILE,"+<dog2cat"); 
while(<FILE>) 
{ 
    my $line=$_; 
    if($line =~ /dog/) 
    { 
    $line =~ s/dog/cat/; 
    print FILE $line; 
    } 
} 
close FILE; 

最後にファイルには、私が

This example 
The cat is drinking. 
It is drinking milk. 

答えて

1

オープンAを取得したい

This example 
The dog is drinking. 
The cat is drinking. 

が含まれています2番目のファイルを出力し、それを出力します。または、別のファイルの代わりに画面に出力し、スクリプトを実行すると出力をファイルにパイプします。単純なファイルの更新タスクの場合

+0

なぜ私はanorherファイルが必要ですか? – Alex

2

、あなたは「ワンライナーを」Perlを使用することができます。

perl -i -pe 's/dog/cat/g' dogcat.txt 

-iはあなたがで作業しているファイルを更新すると言います場合は、それに拡張子を追加することができます(たとえば、-i.bakは、dogcat.txt.bakというファイルに書き込みます)。

-pは、各行に対して繰り返しを行い、それを印刷します(-i、ファイルに戻って印刷します)。

-eは、ファイル内の各行の引用符の間にあるものを実行します。

+0

私はこのスクリプトをperlファイル:file.plから実行します。大丈夫ですか ? – Alex

+1

私はそれをお勧めしません。 Perl内でperlを実行しないでください。スクリプト内では、Perlの新人が同じファイルを読み書きすることは容易ではないので、元のファイルを読んでいる間に別のファイルを開いて、新しいファイルを古いファイルにコピーする必要があります。 – stevieb

関連する問題