匹配正则表达式从文件中删除密码

时间:2012-08-22 16:27:06

标签: regex linux sed

我有一个包含以下行的文件

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 

2 个答案:

答案 0 :(得分:3)

正如Hbcdev所说,由于空白,你不匹配。因为这似乎是“安全”代码(在这种情况下 - 为什么你要将这个密码存储在纯文本中?),最好是空白容忍而不是匹配输入的逐字节。类似的东西:

sed 's/app\.db\.password[ \t]*=.*/app.db.password="xxxxx"/

(未经测试)可能会更有效地工作。请注意,即使它没有以引号开头,它也会删除您的密码字段。

尽管如此,使用shell脚本做这种hackery听起来很危险。你想要完成什么?

答案 1 :(得分:2)

您的=表达式中的sed符号周围没有留空格。一旦你这样做,我认为它会起作用。