用sed替换双引号哈希

时间:2013-07-17 19:46:11

标签: bash shell

我在配置文件中替换默认密码哈希时遇到问题:

sed -i 's/default_password_crypted: "[^"]*"/default_password_crypted: "\$1\$mF86/UHC\$WvcIcXred6crBz2onWxyac."/' input.txt

我收到以下错误:

  

sed:-e expression#1,char 74:`s'

的未知选项

工作的:

search pattern: default_password_crypted: "$1$mF86/UHC$WvcIcX2t6crBz2onWxyac."

sed -i 's/default_password_crypted: "[^"]*"/default_password_crypted: "1234567890"/' input.txt

我如何为哈希编写替换模式?

THX

1 个答案:

答案 0 :(得分:0)

您需要在替换内部转义文字/,因为它是分隔符:

sed -i 's/default_password_crypted: "[^"]*"/default_password_crypted: "\$1\$mF86\/UHC\$WvcIcXred6crBz2onWxyac."/' input.txt

或者只是使用其他字符,例如,

sed -i 's,default_password_crypted: "[^"]*",default_password_crypted: "\$1\$mF86,UHC\$WvcIcXred6crBz2onWxyac.",' input.txt

您也无需逃离替换内的$