多次替换 - 使用 sed 或 awk

多次替换 - 使用 sed 或 awk

我有如下代码片段

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”行。

相关内容