2014-06-05 32 views
0

我此行我的配置文件Perl的一個班輪+編輯文件之前添加條件

 MY_PASSWORD=PASSWORD 

我想的Perl的單行線改,字PASSWORD到其他字作爲 - MY_SECRET_PASS

所以我寫這篇文章的Perl襯墊語法(這perl的是我的bash腳本中)

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

我還想條件添加到我的Perl的單行語法,如果PASSWORDMY_PASSWORD定義,將檢查=

所以,只有當它TURE,那麼Perl將取代PASSWORD,與MY_SECRET_PASS

如果不使用Perl將會退出而不做任何

例如:

more file 


    MY_PASSWORD=PASSWORD 

運行的Perl行文件後,應該是這樣的:

 MY_PASSWORD=MY_SECRET_PASS 

但正如我所說的Perl行必須先檢查單詞的密碼後MY_PASSWORD =,

+0

你的問題不清楚的。請舉例 – Borodin

+1

據推測,「班輪線」的意思是「單線」。 – ooga

回答

6

它將匹配MY_PASSWORD=PASSWORD現有,但僅更換PASSWORD部分,

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

\K是零寬度positive look behind,和/x告訴正則表達式忽略可能會提高正則表達式可讀性的空格。

UPDATE:

很老的版本的Perl(5.8.x及以上)

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