正则表达式以查找(并替换)SQL脚本中的外键

时间:2019-03-01 16:15:36

标签: regex awk sed

我有一个SQL脚本,其中包含用于多个表的表创建脚本。我需要一个脚本(sed)来更新其中一个的外键引用。

是否可以从以下脚本中检测到FOREIGN KEY (MY_KEY_ID) REFERENCES fff(ID) ON DELETE CASCADE ,

请注意,它可能不是该特定文本的唯一出现,因此我需要找到在CREATE TABLE MYTABLE之后出现的那个文本。

CREATE TABLE MYTABLE (
  blah
  .....
  FOREIGN KEY (MY_KEY_ID) REFERENCES fff(ID) ON DELETE CASCADE ,
  FOREIGN KEY ....
)

更新:

最终目标是使用bash脚本从一个键中删除ON DELETE CASCADE并将其添加到下一个键中。

1 个答案:

答案 0 :(得分:1)

这将在CREATE TABLE字符串之后找到FOREIGN KEY字符串,但是现在是什么?

$ awk '
    index($0,"CREATE TABLE MYTABLE") { f=1 }
    f && index($0,"FOREIGN KEY (MY_KEY_ID) REFERENCES fff(ID) ON DELETE CASCADE ,")
' file
FOREIGN KEY (MY_KEY_ID) REFERENCES fff(ID) ON DELETE CASCADE ,