我需要一个函数来搜索文本文件中的模式,并用另一个字符串替换整行。 sed的等效函数如下所示。
sed -i '/user_5/c\user_5|age-1|email5@sample.com|state-1' data.property
数据文件如下所示。
user_1|age-1|email1@sample.com|state-1
user_5|age-1|email5@sample.com|state-5
user_4|age-4|email4@sample.com|state-4
Perl脚本中需要一个函数。这个要求的语法是什么?
答案 0 :(得分:1)
您可以在命令行上使用以下Perl代码:
perl -i.bak -lpe '$_ = q(user_5|age-1|email5@sample.com|state-1) if /^user_5/' file
<强>解释强>
-i
:就地更改。 .bak
允许您将原始文件保留为备份。-l
:点击换行符并在打印过程中将其放回。-p
:创建隐式while(<>) { print }
循环。-e
:告诉Perl执行其后的代码。在Perl脚本中执行此操作:
#!/usr/bin/perl
use strict;
use warnings;
use autodie;
my $file = "file"; # Path to your file
local @ARGV = $file;
local $^I = '.bak';
while (<>) {
print and next unless /^user_5/;
print q(user_5|age-1|email5@sample.com|state-1), "\n";
}
#unlink "$file$^I"; # Uncomment if you don't want a backup
答案 1 :(得分:0)
perl -lne 'if (/user_5/) { print "user_5|age-1|email5\@sample.com|state-1" } else { print }'
是一种方法。