perl一线+在编辑文件之前添加条件 [英] perl one-liner + add condition before edit file

查看:49
本文介绍了perl一线+在编辑文件之前添加条件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的配置文件中有这一行

I have this line in my configuration file

     MY_PASSWORD=PASSWORD

我想通过perl单行代码将 PASSWORD 一词更改为- MY_SECRET_PASS

I want to change by perl one-liner line , the word PASSWORD to other word as - MY_SECRET_PASS

所以我写了这个perl衬里语法(这个perl在我的bash脚本中)

so I write this perl liner syntax ( this perl is inside my bash script )

      perl -i -pe "s/PASSWORD/MY_SECRET_PASS/"   file

我还想在我的perl单行语法中添加条件,该条件将检查 PASSWORD MY_PASSWORD =

I want also to add condition to my perl one-liner syntax that will check if PASSWORD defined after MY_PASSWORD=

因此只有当它成功时,perl才会将 PASSWORD 替换为 MY_SECRET_PASS

so only if it ture , then perl will replace the PASSWORD , with MY_SECRET_PASS

如果不是perl,它将不执行任何操作而退出

if not perl will exit without do anything

示例:

  more file


  MY_PASSWORD=PASSWORD

运行perl行文件后应如下所示:

after running the perl line file should be like this:

      MY_PASSWORD=MY_SECRET_PASS

但是正如我说的那样,perl行必须首先检查MY_PASSWORD =之后的PASSWORD单词是否存在,

but as I said perl line must to check first the existing of the word PASSWORD after MY_PASSWORD= ,

推荐答案

它将与 MY_PASSWORD = PASSWORD 匹配,但仅替换 PASSWORD 部分,

It will match MY_PASSWORD=PASSWORD, but replace only PASSWORD part,

perl -i -pe 's/MY_PASSWORD=\K PASSWORD/MY_SECRET_PASS/x' file

\ K 是零宽度的正向查看,并且/x 告诉正则表达式忽略空格,这可以提高正则表达式的可读性.

\K is a zero-width positive look behind, and /x tells regex to ignore white-spaces which may improve regex readability.

更新:

用于非常旧的perl版本( 5.8.x 和更早版本)

for very old versions of perl (5.8.x and older)

perl -i -pe 's/(?<=MY_PASSWORD=)PASSWORD/MY_SECRET_PASS/' file

这篇关于perl一线+在编辑文件之前添加条件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆