我想将匹配结果的特定部分存储为稍后用于替换的变量。我希望将它保留在一行中,而不是在事先找到我需要的变量。配置Apache的时候,和使用mod_rewrite,你可以specificy的模式特定部分在sed命令中使用占位符/变量
用作变量,像这样:
RewriteRule ^www.example.com/page/(.*)$ http://www.example.com/page.php?page=$1 [R=301,L]
多数民众赞成包含在括号内的模式匹配的部分存储用$ 1供以后使用。所以如果网址是www.example.com/page/home
,它将被替换为www.example.com/page.php?page=home
。所以比赛的“主场”部分被保存在$ 1中,因为它是括号内模式的一部分。
我想要这样的功能与sed
命令,我需要自动替换SQL转储文件中的许多字符串,以添加删除表,如果在每个创建表之前存在的命令,但我需要知道表名称做这一点,所以如果转储文件包含类似:
...
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语法作为我试图做的一个逻辑例子。
有什么建议吗?
感谢您对此的解释,它已经完全回答我的问题。 –