sed 替换 user@hostname

问题描述 投票:0回答:3

查找内容:

DEFINER=`abc_de43`@`123.234.56.345`

替换为:

DEFINER=`dbadmin`@`%`

文件内容:

CREATE ALGORITHM=UNDEFINED DEFINER=`abc_de43`@`123.234.56.345`
CREATE ALGORITHM=UNDEFINED DEFINER=`def_test_db`@`localhost`
CREATE ALGORITHM=UNDEFINED DEFINER=`admin_test_db`@`XXX.YYY.ZZZ.AAA`
CREATE ALGORITHM=UNDEFINED DEFINER=`d123_test_db`@`hostname`
CREATE ALGORITHM=UNDEFINED DEFINER=`def_344_db`@`12.123.23.123`

我正在尝试的命令:

sed  's/`*`@`*`/`dbadmin`@`%`/g' /tmp/vwdefTest.txt

请帮忙,先谢谢了

mysql linux bash sed
3个回答
0
投票

如果您想具体匹配,您可能希望表达式包含

DEFINER=
。无论如何,您似乎缺少的是
.
.
表示“任何字符”,
*
表示该字符出现一个或多个。

尝试:

sed 's/DEFINER=`.*`@`.*`/DEFINER=`dbadmin`@`%`/g' /tmp/vwdefTest.txt

0
投票

`* 只会匹配 1 个或多个

characters in regular expressions, remember that
*`,这里不是全局匹配。

您可以使用这个

sed
命令:

sed -E 's/(DEFINER=)`[^`]*`@`[^`]*/\1`dbadmin`@`%`/' file

CREATE ALGORITHM=UNDEFINED DEFINER=`dbadmin`@`%``
CREATE ALGORITHM=UNDEFINED DEFINER=`dbadmin`@`%``
CREATE ALGORITHM=UNDEFINED DEFINER=`dbadmin`@`%``
CREATE ALGORITHM=UNDEFINED DEFINER=`dbadmin`@`%``
CREATE ALGORITHM=UNDEFINED DEFINER=`dbadmin`@`%``

这里:

`[^`]*`

将匹配两侧用 ` 包裹的文本。

如果您想保存输入文件中的更改,请使用:

sed -i.bak -E 's/(DEFINER=)`[^`]*`@`[^`]*/\1`dbadmin`@`%`/' file

0
投票

这与 MySQL 无关,请使用

sudo sed -i 's/DEFINER=
abc_de43
@
123.234.56.345
/DEFINER=
dbadmin
@
%
/'

astdbtemplate:~ # cat /tmp/vwdefTest.txt
CREATE ALGORITHM=UNDEFINED DEFINER=`abc_de43`@`123.234.56.345`
CREATE ALGORITHM=UNDEFINED DEFINER=`def_test_db`@`localhost`
CREATE ALGORITHM=UNDEFINED DEFINER=`admin_test_db`@`XXX.YYY.ZZZ.AAA`
CREATE ALGORITHM=UNDEFINED DEFINER=`d123_test_db`@`hostname`
CREATE ALGORITHM=UNDEFINED DEFINER=`def_344_db`@`12.123.23.123`
astdbtemplate:~ #
astdbtemplate:~ #
astdbtemplate:~ #
astdbtemplate:~ #
astdbtemplate:~ # sudo sed -i 's/DEFINER=`abc_de43`@`123.234.56.345`/DEFINER=`dbadmin`@`%`/' /tmp/vwdefTest.txt
astdbtemplate:~ #
astdbtemplate:~ # cat /tmp/vwdefTest.txt
CREATE ALGORITHM=UNDEFINED DEFINER=`dbadmin`@`%`
CREATE ALGORITHM=UNDEFINED DEFINER=`def_test_db`@`localhost`
CREATE ALGORITHM=UNDEFINED DEFINER=`admin_test_db`@`XXX.YYY.ZZZ.AAA`
CREATE ALGORITHM=UNDEFINED DEFINER=`d123_test_db`@`hostname`
CREATE ALGORITHM=UNDEFINED DEFINER=`def_344_db`@`12.123.23.123`
© www.soinside.com 2019 - 2024. All rights reserved.