我想根据同一文件中另一列中的值编辑文件(替换列值)文件。我不想在替换后将输出重定向到另一个文件,而是想编辑文件。具体需要这个,因为需要编辑的文件将被同时访问的任何程序和就地编辑是必须的想要根据同一文件中另一列中的值编辑文件(替换列值)
我试过下面的代码。但是这又一次写入输入文件行
#!/usr/bin/perl -w
open(FILEIN, "/dummy/chaat/h2") || die("Cannot open file");
@file = <FILEIN>;
seek FILEIN, 0, 0;
foreach $file (@file) {
@field = split(/\|/, $file);
print $field[8] . "\n";
if ($field[8] eq "ROBERT") {
$file =~ s/JAMES/FUDIK/g;
print FILEIN $file;
}
}
我的样本记录如下所示。在这里我想对此进行内联编辑。如果场8 ROBERT然后用FUDIK在现场代替JAMES 7
Change|sinmg|ewfewf|ewfew|def|fdfd|JAMES|rewr|ROBERT|dsf|fe
Change|sinmg|ewfewf|ewfew|def|JAMES|fewf|rewr|BEASLEY|dsf|fe
我希望在这个
除非新字段的大小与前一字段完全相同,否则无法避免重写该文件,如果这是您的意图,请使用数据库。 – Thor
@Thor下面的答案来自于TLP无论字段大小如何都可以工作 – Chkusi
'-i'开关可以在原地表示,但在后台使用临时文件,请参阅'perlrun(1)'。 – Thor