0

我有一个像 test.l 这样的文件

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

我想删除具有“价格”的行中的引号。我一直在尝试使用:

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;

遇到“价格”时,我可以用修改后的行覆盖输入文件吗???上面的代码只是打印输入而不做任何更改。

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 回答