如何用 sed 替换 SQL 文件中的字符串
How to replace a string inside an SQL file with sed
我有一个 Multi-site WordPress 安装,其中包含我工作的公司的几个站点,并且我生成了一个 bash 脚本,分别为每个站点提取数据库表。
此外,我们根据每个副本的位置为每个站点命名。例如,站点的本地副本名为 Site Title - Local
,登台的标题如 Site Title - Staging
,制作的标题如 Site Title
.
在我的脚本中,我可以使用以下 sed
命令来查找 - Local
并将其替换为 - Staging
sed -i -e "s/\s\-\sLocal/\ \-\ Staging/g" ${staging_sql_file};
但是下面的方法不能删除字符串 - Local
:
sed -i -e "s/ - Local//g" ${staging_sql_file};
我也有像下面这样的尝试模式:
"s/\s\-\sLocal//g"
"s/ \- Local//g"
"s/\s\-\sLocal/\s/g"
"s/ \- Local/ /g"
但是 none 这些作品。
有人可以帮我解决这个问题吗?
更新 #1
当我尝试上面显示的正则表达式时,我收到来自 sed
的错误。
更新#2
我的 SQL 文件如下:
LOCK TABLES `wp_16_options` WRITE;
/*!40000 ALTER TABLE `wp_16_options` DISABLE KEYS */;
INSERT INTO `wp_16_options` VALUES (1,'siteurl','https://www.site-url.com','yes'),(2,'home','https://www.site-url.com','yes'),(3,'blogname','Site Title - Local','yes'),(4,'blogdescription','Just another multi site wp site','yes'),(5,'users_can_register','0','yes'),...
[SO]$ cat file
Site Title - Local
Site Title - Staging
Site Title
[SO]$ sed 's/ - Local//g' file
Site Title
Site Title - Staging
Site Title
试试这个 sed:
sed -i.bak 's/[[:blank:]]*-[[:blank:]]*Local//g' "${staging_sql_file}"
即使用 POSIX class [[:blank:]]
代替水平白色-space.
我有一个 Multi-site WordPress 安装,其中包含我工作的公司的几个站点,并且我生成了一个 bash 脚本,分别为每个站点提取数据库表。
此外,我们根据每个副本的位置为每个站点命名。例如,站点的本地副本名为 Site Title - Local
,登台的标题如 Site Title - Staging
,制作的标题如 Site Title
.
在我的脚本中,我可以使用以下 sed
命令来查找 - Local
并将其替换为 - Staging
sed -i -e "s/\s\-\sLocal/\ \-\ Staging/g" ${staging_sql_file};
但是下面的方法不能删除字符串 - Local
:
sed -i -e "s/ - Local//g" ${staging_sql_file};
我也有像下面这样的尝试模式:
"s/\s\-\sLocal//g"
"s/ \- Local//g"
"s/\s\-\sLocal/\s/g"
"s/ \- Local/ /g"
但是 none 这些作品。
有人可以帮我解决这个问题吗?
更新 #1
当我尝试上面显示的正则表达式时,我收到来自 sed
的错误。
更新#2
我的 SQL 文件如下:
LOCK TABLES `wp_16_options` WRITE;
/*!40000 ALTER TABLE `wp_16_options` DISABLE KEYS */;
INSERT INTO `wp_16_options` VALUES (1,'siteurl','https://www.site-url.com','yes'),(2,'home','https://www.site-url.com','yes'),(3,'blogname','Site Title - Local','yes'),(4,'blogdescription','Just another multi site wp site','yes'),(5,'users_can_register','0','yes'),...
[SO]$ cat file
Site Title - Local
Site Title - Staging
Site Title
[SO]$ sed 's/ - Local//g' file
Site Title
Site Title - Staging
Site Title
试试这个 sed:
sed -i.bak 's/[[:blank:]]*-[[:blank:]]*Local//g' "${staging_sql_file}"
即使用 POSIX class [[:blank:]]
代替水平白色-space.