Tôi muốn lưu trữ một phần cụ thể của kết quả phù hợp làm biến được sử dụng để thay thế sau này. Tôi muốn giữ điều này trong một lớp lót thay vì tìm biến tôi cần trước khi tay.Sử dụng trình giữ chỗ/biến trong lệnh sed
khi cấu hình apache, và sử dụng mod_rewrite, bạn có thể specificy phần cụ thể của mô hình được sử dụng như các biến, như thế này:
RewriteRule ^www.example.com/page/(.*)$ http://www.example.com/page.php?page=$1 [R=301,L]
một phần của mô hình phù hợp đó là chứa bên trong ngoặc được lưu giữ như $ 1 để sử dụng sau. Vì vậy, nếu url là www.example.com/page/home
, nó sẽ được thay thế bằng www.example.com/page.php?page=home
. Vì vậy, phần "nhà" của trận đấu được lưu trong $ 1 vì nó là một phần của mẫu bên trong dấu ngoặc đơn.
Tôi muốn có chức năng này với lệnh sed
, tôi cần tự động thay thế nhiều chuỗi trong tệp kết xuất SQL, để thêm bảng thả nếu tồn tại các lệnh trước mỗi bảng tạo, nhưng tôi cần biết tên bảng cần làm này, vì vậy nếu các tập tin dump chứa một cái gì đó như:
...
CREATE TABLE `orders`
...
tôi cần phải chạy một cái gì đó như:
cat dump.sql | sed "s/CREATE TABLE `(.*)`/DROP TABLE IF EXISTS $1\N CREATE TABLE `$1`/g"
để có được những kết quả của:
...
DROP TABLE IF EXISTS `orders`
CREATE TABLE `orders`
...
Tôi đang sử dụng cú pháp mod_rewrite trong lệnh sed
làm ví dụ logic về những gì tôi đang cố gắng thực hiện.
Mọi đề xuất?
Cảm ơn lời giải thích này, nó đã trả lời hoàn toàn câu hỏi của tôi. –