rahuls36 Asked: 2019-07-30 21:33:59 +0800 CST2019-07-30 21:33:59 +0800 CST 2019-07-30 21:33:59 +0800 CST 匹配模式的字符串替换 772 我有一个 170GB 的 SQL 文件。我正在尝试在 AWS RDS 上还原它,但由于文件上启用了密钥环加密,我无法做到。我无法使用 vi 编辑它,因为它导致我的会话超时。 我正在尝试使用 sed 命令执行此活动,但我做不到。 这是我正在使用的命令,但字符串值没有改变。 sed -i 's/ENCRYPTION='Y'/ENCRYPTION='N'/g' sed sql 1 个回答 Voted Best Answer Kusalananda 2019-07-30T21:55:05+08:002019-07-30T21:55:05+08:00 您不能在单引号字符串中使用单引号。 sed相反,在表达式周围使用双引号: sed -i "s/ENCRYPTION='Y'/ENCRYPTION='N'/g" 我怀疑这会神奇地解密您的数据,但它至少会按照您可能想要的方式替换文件中的字符串。 您的原始命令尝试替换ENCRYPTION=Y为ENCRYPTION=N(注意缺少的单引号)。这是因为最初的单引号'Y' 结束了字符串s/ENCRYPTION=。然后将 unquotedY与 this 后跟单引号 string/ENCRYPTION=后跟 unquotedN和单引号 string连接起来/g。
您不能在单引号字符串中使用单引号。
sed
相反,在表达式周围使用双引号:我怀疑这会神奇地解密您的数据,但它至少会按照您可能想要的方式替换文件中的字符串。
您的原始命令尝试替换
ENCRYPTION=Y
为ENCRYPTION=N
(注意缺少的单引号)。这是因为最初的单引号'Y'
结束了字符串s/ENCRYPTION=
。然后将 unquotedY
与 this 后跟单引号 string/ENCRYPTION=
后跟 unquotedN
和单引号 string连接起来/g
。