使用" name = value"处理输入文件;使用perl对

时间:2015-01-21 14:14:23

标签: regex perl

我使用的模拟代码需要从input.txt文件中读取参数,该文件看起来像

paramA = 1,paramB = 2,
paramC = 3,paramD = 4,

在模拟中扫描参数(如paramC)时,我需要每次手动更改paramC的值。如何使用perl脚本执行此操作,以便在键入

perl scriptname input.txt paramC 100

在命令行中我可以获得修改后的输入文件,其中paramC更改为100

 paramA = 1,paramB = 2,
 paramC = 100,paramD = 4,

我可以通过创建像

这样的模板文件来实现
paramA = 1,paramB = 2,
paramC = <>,paramD = 4,

然后使用perl匹配标记&lt;&gt;并用我想要的值替换它。但是,是否有更直接的方法来匹配参数名称并更改其值?

感谢。

1 个答案:

答案 0 :(得分:2)

显而易见的答案是使用正则表达式。 Perl非常擅长这些。

所以你可以 - 例如 - 做:

s/paramC = \d+/paramC = $value/g; 

我会想到哪个技巧?

编辑:或者在评论中使用TLP的模式:

s/^paramC = \K[^ ,]+/$value/g;

或者也许:

s/^paramC = \K\d+/$value/g;