我有一个文件,其中包含以下几行
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
正如 Hbcdev 指出的那样,由于空格,您不匹配。由于这似乎是“安全”代码(在这种情况下 - 为什么要以纯文本形式存储该密码?),容忍空格可能比逐字节匹配输入更好。就像是:
sed 's/app\.db\.password[ \t]*=.*/app.db.password="xxxxx"/
(未经测试)可能会更稳健地工作。请注意,即使它不以引号开头,它也会删除您的密码字段。
尽管如此,用 shell 脚本做这种骇客听上去还是很危险的。你想达到什么目的?
您没有在表达式中的=符号周围留下空格。sed一旦你这样做,我认为它会起作用。