linux - sed 命令将 'root' @'localhost' 替换为 'root' @'%'

标签 linux replace sed quotes

我正在尝试使用 sed 将表达式 'root'@'localhost' 替换为 'root'@'%'没有成功。有人可以帮我执行命令吗?

我尝试了以下方法:

sed -i ’s#\’root\’@\’localhost\’#\’root\’@\’%\’#g’  xyz.sql
sed: -e expression #1, char 1: unknown command: `?'

sed -i -e ’s/localhost/%/g’ xyz_2616.sql 
sed: -e expression #1, char 1: unknown command: `?'

最佳答案

首先,确保您使用的是单引号。 '(又名 或 unicode 8217)与 ASCII 字符 39,' 不同。

接下来,您无法在单引号内转义单引号。 Here's an answer我前段时间写过。

但是,您可以将单引号放在双引号内,或者将它们转义到单引号字符串之外。例如,以下任一方法都可能有效:

sed -e "s/'root'@'localhost'/'root'@'%'/g" file.sql

sed -e 's/'\''root'\''@'\''localhost'\''/'\''root'\''@'%'\''/g' file.sql

或者,您可以只替换您感兴趣的部分,相信它不会出现在同一行的其他地方:

sed -e '/root.@.localhost/s/localhost/%/' file.sql

关于linux - sed 命令将 'root' @'localhost' 替换为 'root' @'%',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38599391/

相关文章:

linux - 是否有一个很好的工具来解析/评估数学表达式?

python - 如何更改列表元组中的第一个值?

javascript - 尝试根据 <input> 按钮动态替换 url 和选项值

linux - Unix 命令理解 sed 脚本

linux - 从文件中过滤具有给定前缀的特定行

linux - 从日志文件中解析信息并查询进程表

无法在 Ubuntu 中使用 Codeblocks IDE 编译 libcurl

javascript - 与/b 一起使用时,替换函数无法识别西里尔字符

sed - 用awk交换两列

python - 无法从 python 3.5.2 升级到 3.6