我需要一个函数来搜索文本文件中的模式,并用另一个字符串替换整行。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-4Perl脚本中需要一个函数。这个要求的语法是什么?
发布于 2014-08-20 04:00:43
您可以在命令行中使用以下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发布于 2014-08-20 04:00:53
perl -lne 'if (/user_5/) { print "user_5|age-1|email5\@sample.com|state-1" } else { print }'是一种方法。
https://stackoverflow.com/questions/25396374
复制相似问题