我正在尝试使用shell perl脚本增加文本文件中的特定值
这是我的档案:
foo=123
bar=456
baz=789
这是我尝试使用的shell命令:
perl -p -i -e 's/bar=(\d+)/$1 + 1/ge' myfile.txt
然而,失去了“bar =”部分。如何匹配“bar = 456”并且只增加到457?
答案 0 :(得分:3)
将bar=
匹配到一个组中,例如;
perl -p -i -e 's/(bar=)(\d+)/$1.($2 + 1)/ge' myfile.txt
答案 1 :(得分:3)
您应该确保使用行锚^
的开头部分匹配。您还可以使用lookbehind断言(?<= ... )
来保留匹配的第一部分,或\K
如果您的Perl版本支持它。您也不需要在每个单独的开关之前放一个破折号。
perl -pie 's/(?<=^bar=)(\d+)/$1 + 1/ge'
或\K
:
perl -pie 's/^bar=\K(\d+)/$1 + 1/ge'