我想將匹配結果的特定部分存儲爲稍後用於替換的變量。我希望將它保留在一行中,而不是在事先找到我需要的變量。配置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語法作爲我試圖做的一個邏輯例子。
有什麼建議嗎?
感謝您對此的解釋,它已經完全回答我的問題。 –