0

test.lのようなファイルがあります

car ( "kia"
max speed
min speed
price "XXX"
)
bike ( "R1"
max speed
min speed
price "YYY"
)

'price'の行の引用符を削除したい。私はそれを使ってそれをやろうとしてきました:

use strict;

open FILE, "<<test.l";
#open (FILE2,">>test.l");

while (my $string = <FILE>) {

    if ($string =~ m/^price/ig) {

        $string =~ s/\"//ig;
        print  FILE $string;
    }
}
close FILE;
#close FILE2;

'price'が検出されたときに、入力ファイルを変更された行で上書きできますか?上記のコードは、入力を変更せずに出力するだけです。

4

2 に答える 2

3

いいえ、それは実際には不可能です。一時ファイルを作成する必要があります。この次のトリックはあなたのために一時ファイルを作成します:

local @ARGV = 'test.1';
local $^I = '';          # Use .bak on Windows
while (<>) {
   s/"//g if /^price/;
   print;
}

基本的には同じです

perl -i -pe's/"//g if /^price/' test.1
于 2012-09-25T02:12:22.553 に答える
0
perl -ne 'if(/^price/){s/\"//g;}print' your_file
于 2012-09-25T07:22:53.220 に答える