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 
4

2 回答 2

3

正如 Hbcdev 指出的那样,由于空格,您不匹配。由于这似乎是“安全”代码(在这种情况下 - 为什么要以纯文本形式存储该密码?),容忍空格可能比逐字节匹配输入更好。就像是:

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

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

尽管如此,用 shell 脚本做这种骇客听上去还是很危险的。你想达到什么目的?

于 2012-08-22T16:39:44.520 回答
2

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

于 2012-08-22T16:28:12.937 回答