perl one-liner +在编辑文件之前添加条件

时间:2014-06-05 15:58:03

标签: linux perl bash

我的配置文件中有这一行

     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这个词的存在,

1 个答案:

答案 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