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

时间:2015-01-19 16:44:04

标签: replace awk sed

第一个问题:

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

实施例

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

让我们说:

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

在包含关键字'crypt'

的文件中的一行中

第二

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

实施例

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

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

1 个答案:

答案 0 :(得分:0)

第一个问题:

我使用|作为分隔符。

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

第二

\x27(十六进制)代表'

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