我想用perl替换文件中的特殊字符串

时间:2017-10-31 17:25:29

标签: regex perl

我将此命令用于lunux服务器中的简单字符串

<input type="hidden" name="token" value="<?=token2();?>" />

但我想替换此代码:

<input type="hidden" name="<?=rrobot();?>" value="<?=mrobot();?>"/><input type="hidden" name="<?=trobot();?>" value="<?=rtoken();?>"/>

将此代码放在同一个文件中:

{ 
 "Barcode" : "M28"
}

但我不知道该怎么做

请帮帮我

1 个答案:

答案 0 :(得分:2)

首先创建一个与您想要更改的行匹配的正则表达式:

perl -n -e '/PATTERN/&&print' mosi.php

在你的情况下:

perl -n -e '/<input type="hidden" name="token" value="<\?=token2\(\);\?>" \/>/&&print' mosi.php

现在,添加捕获括号:

perl -n -e 'print "$_\n"for /(<input type="hidden" name=")token(" value=")<\?=token2\(\);\?>(" \/>)/' mosi.php

现在您可以收集零件,将它们放在一起以获得结果:

perl -p -e 's/(<input type="hidden" name=")token(" value=")<\?=token2\(\);\?>(" \/>)/$1<?=rrobot();?>$2<?=mrobot();?>$3$1<?=trobot();?>$2<?=rtoken();?>$3/' mosi.php

一旦你完全确定它是正确的,请更改文件:

perl -pi -e 's/(<input type="hidden" name=")token(" value=")<\?=token2\(\);\?>(" \/>)/$1<?=rrobot();?>$2<?=mrobot();?>$3$1<?=trobot();?>$2<?=rtoken();?>$3/' mosi.php