RewriteRule ^www.example.com/page/(.*)$ http://www.example.com/page.php?page=$1 [R=301,L]
在匹配模式中,括号内的部分被保存为 $1 以供后续使用。因此,如果URL是www.example.com/page/home
,则它将被替换为www.example.com/page.php?page=home
。因为括号内部分是模式中的一部分,所以匹配的“home”部分被保存在 $1 中。
我希望能够使用 sed
命令实现类似的功能,我需要自动替换 SQL 转储文件中的许多字符串,在每个创建表之前添加 "drop table if exists" 命令,但我需要知道表名才能执行此操作。因此,如果转储文件包含以下内容:
...
CREATE TABLE `orders`
...
我需要运行类似以下的内容:
cat dump.sql | sed "s/CREATE TABLE `(.*)`/DROP TABLE IF EXISTS $1\N CREATE TABLE `$1`/g"
获取以下结果的方法:
...
DROP TABLE IF EXISTS `orders`
CREATE TABLE `orders`
...
我正在使用sed
命令中的mod_rewrite语法作为我的逻辑示例,展示我想要做的事情。
有任何建议吗?