我正在将现有的数据库模式移植到 Postgresql。
我需要用半逗号替换出现的“go”一词。
我注意到“go”这个词出现在文本中,模式如下:
- [非空字符串 (SQL)]
- [后跟一个或多个新行]
- [后跟一个或多个空格]
- [后面跟着“去”这个词]
- [后跟一个或多个新行]
我想用以下模式替换上述模式:
- [非空字符串 (SQL)]
- [其次是 ';']
- [后跟两条新线]
我正在尝试构建一个可以与 sed 一起使用的正则表达式,以执行上述替换 - 但我对正则表达式相对较新。
为了清楚起见,我在我想要实现的替换之前和之后包含了示例文本:
-- Original File contents below -------
go
CREATE TABLE foobar
(
f1 INT,
f2 INT,
f3 FLOAT,
f4 VARCHAR(32) NOT NULL,
f5 INT,
f6 datetime,
f7 smallint
)
go
GRANT UPDATE, INSERT, DELETE, SELECT ON foobar TO dbusr
go
CREATE UNIQUE INDEX idxu_foobar ON foobar (f1, f2)
go
--- REPLACED FILE CONTENTS -----------
go
CREATE TABLE foobar
(
f1 INT,
f2 INT,
f3 FLOAT,
f4 VARCHAR(32) NOT NULL,
f5 INT,
f6 datetime,
f7 smallint
);
GRANT UPDATE, INSERT, DELETE, SELECT ON foobar TO dbusr;
CREATE UNIQUE INDEX idxu_foobar ON foobar (f1, f2);
任何人都可以帮助使用表达式来实现这一点,所以我可以执行:
sed -i 's/original_match_expr/replacement_expr/g' myfile.sql