如何使用Perl脚本替换文件中的特定行

时间:2013-06-14 13:53:12

标签: perl cgi

我有一个包含80行的文件test.txt。 在perl脚本中,我想用另一个替换60的行。

#!/var/www/cgi-bin/rootperl -w
my $path="/var/www/cgi-bin/test.txt";
open(FICH,">>",$path) || die("Ouverture impossible");
my @input = readline();
chomp(@input);
print FICH "@input[0]\n";
print FICH "@input[1]\n";
print FICH "@input[2]\n";

如何按@input[0]替换特定行(例如第60行)?示例

@input[0] = "abcd";

第60行是"SSID=test"我希望它是"abcd"

2 个答案:

答案 0 :(得分:0)

只是做:

$input[59] = $input[0];

读取输入文件之后和写入输出文件之前。

注意:访问数组中元素的方式是$input[n]而不是@input[n]

尝试使用:

use strict;
use warnings;

my @input = readline();

my $file = 'path/to/file.txt';
open my $fh, '<', $file or die "unable to open '$file' for reading: $!";
my @lines = <$fh>;

$lines[59] = $input[0]
open my $fh, '>', $file or die "unable to open '$file' for writing: $!";
print $fh @lines;

答案 1 :(得分:0)

试试这个:

perl -i -pe 'if ( $. == 60 ) { print whatever;}' filea.txt