У меня есть фрагмент кода, как показано ниже

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 ответ1

0
'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".

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .