我的配置文件中有这一行
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才能用 MY_SECRET_PASS
取代 PASSWORD如果不是perl将退出而不做任何事情
示例:
more file
MY_PASSWORD=PASSWORD
运行perl行文件后应该是这样的:
MY_PASSWORD=MY_SECRET_PASS
但正如我所说perl line必须在MY_PASSWORD =之后首先检查PASSWORD这个词的存在,
答案 0 :(得分:6)
它将与MY_PASSWORD=PASSWORD
匹配,但仅替换PASSWORD
部分,
perl -i -pe 's/MY_PASSWORD=\K PASSWORD/MY_SECRET_PASS/x' file
\K
是零宽度positive look behind,/x
告诉正则表达式忽略空格,这可能会提高正则表达式的可读性。
更新:
用于非常旧版本的perl(5.8.x
及更早版本)
perl -i -pe 's/(?<=MY_PASSWORD=)PASSWORD/MY_SECRET_PASS/' file