Ste*_*fan 0 regex perl yaml replace str-replace
我对Perl很新,并且有以下问题:我正在尝试.yml用不同的值替换文件中的版本号.这就是我的正则表达式:
version:\s*([^\s]+)
Run Code Online (Sandbox Code Playgroud)
它到目前为止工作,但它没有做我喜欢做的事情.
这里是我目前拥有的代码,以及用于替换.yml文件中的值的Perl语句.
文件内容(./ test.yml):
app:
version: 1.2
name: abc
Run Code Online (Sandbox Code Playgroud)
码:
$search = "version:\s*([^\s]+)";
$replace = '1.3';
perl -pie 's/$search/$replace/m' ./test.yml;
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
你为什么要尝试在一行中重新实现YAML解析器?!
perl -MYAML=DumpFile,LoadFile -e'
my $d = LoadFile($ARGV[0]);
$d->{app}{version} = "1.3";
DumpFile($ARGV[0], $d);
' test.yml
Run Code Online (Sandbox Code Playgroud)
新版本似乎不太可能像这样硬编码.
版本来自外部.
perl -MYAML=DumpFile,LoadFile -e'
my $d = LoadFile($ARGV[0]);
$d->{app}{version} = $ARGV[1];
DumpFile($ARGV[0], $d);
' test.yml 1.3
Run Code Online (Sandbox Code Playgroud)版本应该递增.
perl -MYAML=DumpFile,LoadFile -e'
my $d = LoadFile($ARGV[0]);
$d->{app}{version} =~ s/\.\K(.*)/ $1+1 /e;
DumpFile($ARGV[0], $d);
' test.yml
Run Code Online (Sandbox Code Playgroud)