2012-08-22 112 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表达。一旦你这样做,我认为它会起作用。