我想根據同一文件中另一列中的值編輯文件(替換列值)文件。我不想在替換後將輸出重定向到另一個文件,而是想編輯文件。具體需要這個,因爲需要編輯的文件將被同時訪問的任何程序和就地編輯是必須的想要根據同一文件中另一列中的值編輯文件(替換列值)
我試過下面的代碼。但是這又一次寫入輸入文件行
#!/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