我有如下代码片段
CREATE TABLE TABLE1(
ID integer NOT NULL,
ROW_CREATED varchar (26) NULL,
BATCH_LOG_ID integer NULL,
TRANSACTION_TYPE varchar(5) NULL,
PARTITION_COL integer NOT NULL
) ON BASE_PARTITION (PARTITION_COL);
我想更改下面的代码
CREATE TABLE TABLE1(
ID integer NOT NULL,
ROW_CREATED varchar (26) NULL,
BATCH_LOG_ID integer NULL,
TRANSACTION_TYPE varchar(5) NULL
) PARTITIONED BY (PARTITION_COL integer NOT NULL);
可以使用 sed 或 awk 来完成吗?
答案1
'BEGIN{f=0} ; { if ($0 ~ "TRANSACTION_TYPE varchar\\(5\\) NULL,") { print ; printf("%-s", ") PARTITIONED BY (PARTITION_COL integer NOT NULL);") ; f=1 } else if (f==0) print }' inputfile
这将打印输入文件的行,直到到达其中包含“varchar(5)”的行,然后打印该行,后跟新的“PARTITIONED BY”行。