【问题标题】:Bash - String replacement with special charactersBash - 用特殊字符替换字符串
【发布时间】:2015-03-17 17:58:48
【问题描述】:

第一个问题:

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

示例

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

比方说:

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

在包含关键字“crypt”的文件中的一行

第二:

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

示例

来自

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

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

【问题讨论】:

  • 最好分开问两个问题。另外,你想如何从gGxk7E7...dfkjdHsj...

标签: replace awk sed


【解决方案1】:

第一个问题:

我使用| 作为分隔符。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多