Bash - 用特殊字符替换字符串

Bash - String replacement with special characters

第一个问题:

如何使用 sed 或 awk 或任何其他方式将具有特殊字符(如 sha512 加密字符串)的字符串替换为另一个具有特殊字符的字符串?

例子

$random_salt$gGxk7E7kZE/bpfLsQ8mUt/BuL.VQ5SAbk.FaTQXV/seUjkIoLwnOfZXch/5CPEG5SYeHtWmykBQ898OkA6HMX1

假设:

$other_salt$dfkjdHsj1ghkJHJHwsjx11njJHd/.1djBkdfSAbk.FaTQX..!skjd.5CPEG5SYedsfsdmddslkHtWmykBQ8df98

在包含关键字 'crypt'

的文件的一行中

第二个:

如何在这些行上用单引号替换双引号。我有一个脚本替换人偶清单中的密码变量。问题是 puppet 默认使用双引号来定义密码字段。我希望使用单引号包含 sha512 加密密码

例子

来自

class user {
    password => "$other_salt$dfkjdHsj1ghkJHJHwX..!skjslkHtWmykBQ8df98"
}

class user {
    password => '$other_salt$dfkjdHsj1ghkJHJHwX..!skjslkHtWmykBQ8df98'
}

第一个问题:

我用 | 作为分隔符。

sed -e 's|$random_salt$gGxk7E7kZE/bpfLsQ8mUt/BuL.VQ5SAbk.FaTQXV/seUjkIoLwnOfZXch/5CPEG5SYeHtWmykBQ898OkA6HMX1|$other_salt$dfkjdHsj1ghkJHJHwsjx11njJHd/.1djBkdfSAbk.FaTQX..!skjd.5CPEG5SYedsfsdmddslkHtWmykBQ8df98|' file

第二个:

\x27(十六进制)代表'

sed -e '/password/{s/"/\x27/g}' file