我有一个像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;
当遇到“价格”时,我可以用修改后的行覆盖输入文件吗? 上面的代码只是打印输入而没有任何改变。
答案 0 :(得分: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
答案 1 :(得分:0)
perl -ne 'if(/^price/){s/\"//g;}print' your_file