我的文件包含一行看起来像这样的行:
some lines
param.1=valueA
param.2=valueB
param.3=valueC
some other lines
我正在尝试在param.3
行(以及编号最高的参数)之后添加一个perl单行添加新行"param.4=valueD"
我已经尝试了几个"perl -i -pe"
命令但是无法执行它。
我非常想要替换自己找到的最后一个匹配线+一个新的线,我会在其中增加一个值。
示例(我还没有找到如何进行增量)
==#> cat /tmp/myfile.txt
param.1=valueA
param.2=valueB
param.3=ValueC
==#> perl -pe 'BEGIN{undef $/;} s/((param\.(\d+)=\S+\s+)*)/\1param.\3=newvalue\n/ms' /tmp/myfile.txt
param.1=valueA
param.2=valueB
param.3=ValueC
param.3=newvalue
答案 0 :(得分:0)
perl -pe '$matched = /^param\.(\d+)=value/ and $num = $1;
$num and ! $matched
and $_ = "param.$last=valueD\n$_"
and undef $num;' myfile.txt
“你想要它在一条线上?它是否必须适合80列?” - Larry Wall
答案 1 :(得分:0)
/usr/bin/perl -i -pe 'BEGIN{undef $/;}; s/((param\.(\d+)=\S+\s)+)/$1."param.".($3+1)."=valueXXX\n"/ems' /tmp/myfile.txt