簡體   English   中英

perl一線+在編輯文件之前添加條件

[英]perl one-liner + add condition before edit file

我的配置文件中有這一行

     MY_PASSWORD=PASSWORD

我想通過perl一線行將PASSWORD一詞更改-MY_SECRET_PASS

所以我寫了這個Perl襯里語法(這個Perl在我的bash腳本中)

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

我還想向我的perl一線語法添加條件,該條件將檢查MY_PASSWORD =之后是否定義了PASSWORD

因此,僅當它成功時,perl才會用MY_SECRET_PASS替換PASSWORD

如果沒有,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告訴正則表達式忽略空格,這可以提高正則表達式的可讀性。

更新:

適用於非常舊的perl版本( 5.8.x和更早版本)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM