我有一个包含以下行的文件
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
答案 0 :(得分:3)
正如Hbcdev所说,由于空白,你不匹配。因为这似乎是“安全”代码(在这种情况下 - 为什么你要将这个密码存储在纯文本中?),最好是空白容忍而不是匹配输入的逐字节。类似的东西:
sed 's/app\.db\.password[ \t]*=.*/app.db.password="xxxxx"/
(未经测试)可能会更有效地工作。请注意,即使它没有以引号开头,它也会删除您的密码字段。
尽管如此,使用shell脚本做这种hackery听起来很危险。你想要完成什么?
答案 1 :(得分:2)
您的=
表达式中的sed
符号周围没有留空格。一旦你这样做,我认为它会起作用。