[英]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.