我的配置文件中有这一行
MY_PASSWORD=PASSWORD
我想通过perl一行修改,字PASSWORD为另一个字- MY_SECRET_PASS
所以我写了这个perl线性语法(这个perl在我的bash脚本中)
perl -i -pe "s/PASSWORD/MY_SECRET_PASS/" file
我还想在我的perl单行语法中添加条件,以检查PASSWORD后定义MY_PASSWORD=
所以只有当它成立时,perl才会将PASSWORD替换为MY_SECRET_PASS如果没有,perl将不做任何操作而退出
的例子:
more file
MY_PASSWORD=PASSWORD
运行perl行文件后应该像这样:
MY_PASSWORD=MY_SECRET_PASS
但是正如我所说的,perl行必须首先检查MY_PASSWORD=后面是否存在PASSWORD这个词,
将匹配MY_PASSWORD=PASSWORD
,但只替换PASSWORD
部分,
perl -i -pe 's/MY_PASSWORD=K PASSWORD/MY_SECRET_PASS/x' file
K
是一个零宽度的正面查看后面,/x
告诉regex忽略空白,这可能会提高regex的可读性。
用于非常旧的perl版本(5.8.x
及更早版本)
perl -i -pe 's/(?<=MY_PASSWORD=)PASSWORD/MY_SECRET_PASS/' file