替换文件中的字符串

时间:2016-06-26 23:56:57

标签: perl

我的文件是这样的

DIV=25
FACILITY=11111

我希望使用Perl将DIV = 25替换为DIV = 30。下面是我的脚本,但文件的输出是DIV = 3030

open( IN_IOE, $FILE_NAME ) || die "Cannot open file";
my @line_ioe = <IN_IOE>;
close(IN_IOE);
chomp @line_ioe;

foreach $_ ( @line_ioe ) {
    s/DIV=/DIV=30/
}

open( OUT, ">test.txt" );
foreach $_ (@line_ioe) {
    print OUT "$_ \n";
}
close(OUT);

我的文件输出是

DIV=3030
FACILITY=11111

任何人都可以告诉我如何用Perl替换文件中的那一行,并指出我错在哪里。

3 个答案:

答案 0 :(得分:1)

您可以在命令行的一行Perl中执行此操作:

perl -pi -e 's/DIV=25/DIV=30/' file.txt

答案 1 :(得分:0)

您展示的代码肯定没有将DIV=30更改为DIV=3030。它根本没有做任何事情因为您已打开输出文件以进行输入

这一行

open( OUT, "<test.txt");

应该是这样的

open OUT, '>', 'test.txt' or die $!;

此外,如果您想将DIV=30替换为DIV=25,那么您需要编写它。我认为替代显然很明显

s/DIV=/DIV=25/

会将DIV=30更改为DIV=2530。请改用

s/DIV=30/DIV=25/

答案 2 :(得分:0)

如果您有多行具有不同的数字(即DIV = 25,DIV = 31,DIV = 21),您可以执行以下操作。

findTop

这里\ d是替换任何数字,'g'是全局执行此操作。

相关问题