2012-08-22 69 views
1

刪除密碼我有包含以下行匹配正則表達式從文件

app.mail.host = 10.1.1.1 
app.mail.debug = true 
app.db.username = spate 
app.db.password = 1#4FnL&@7! 

我想用正則表達式來改變實際的密碼,並更換XXXXXXX出於安全目的的文件。

我想下面的正則表達式,但它不工作。

sed 's/app\.db\.password="[^"]\+/app\.db\.password="XXXXXXXX"/g' foo.txt 

回答

3

正如Hbcdev指出的那樣,由於空白,您並不匹配。由於這看起來像是「安全」代碼(在這種情況下,爲什麼你要以純文本的形式存儲該密碼?),與輸入字節逐字節匹配,最好是空白容忍。例如:

​​

(未經測試)可能會更有效地工作。請注意,即使它不以報價開頭,也會剝離密碼字段。

儘管如此,用shell腳本做這種hackery聽起來很危險。你想達到什麼目的?

+0

有趣的是,這也是工作sed's/app \ .db \ .password。*/app \ .db \ .password =「XXXXXXXX」/ g' – Satish

+0

是的,但是它會匹配「app.db .password_hex「之類的,這可能不是你想要的。真的,如果你真的想要隱藏祕密信息,這不是你應該在shell中做的事情。 –

+0

這不是超級密碼密碼,但只是想在我們將文件備份進程做到遠程服務器時隱藏。 – Satish

2

你還沒有離開周圍的=標誌位在sed表達。一旦你這樣做,我認爲它會起作用。