【发布时间】:2018-02-27 23:16:26
【问题描述】:
我必须“清理”一些 oracle DDL 脚本,删除表空间声明,并且我必须自动执行。我尝试使用 'sed' linux 命令和正则表达式来实现它,但正则表达式似乎不起作用:
输入:
CREATE TABLE "DTCUSR"."AFP_RESOURCE"
( "RSC_ID" NUMBER(12,0),
"RSC_CLASS" VARCHAR2(5 BYTE),
"RSC_NAME" VARCHAR2(8 BYTE),
"RSC_MD5" VARCHAR2(32 BYTE),
"RSC_TYPE" VARCHAR2(50 BYTE),
"RSC_INSERT_DATE" TIMESTAMP (6)
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "DTC_DATA" ;
想出去:
CREATE TABLE "DTCUSR"."AFP_RESOURCE"
( "RSC_ID" NUMBER(12,0),
"RSC_CLASS" VARCHAR2(5 BYTE),
"RSC_NAME" VARCHAR2(8 BYTE),
"RSC_MD5" VARCHAR2(32 BYTE),
"RSC_TYPE" VARCHAR2(50 BYTE),
"RSC_INSERT_DATE" TIMESTAMP (6)
);
linux命令
$ sed "/(?s)SEGMENT CREATION.*?;/;/" afp_resource.sql
但它不起作用,逗号输出与输入相同;如果我在 Sublime 或 regex web tool 上尝试正则表达式,正则表达式会找到我想要的
【问题讨论】: