使用awk/sed替换在匹配模式后找到的字符

使用awk/sed替换在匹配模式后找到的字符,awk,sed,Awk,Sed,我在一个文件中有以下类型的内容。仅当右括号符号出现在模式参考之后时,我才想替换它 请注意,符号)不必在行尾 cat file1 ALTER TABLE mytable1 ADD ( CONSTRAINT myconst1 FOREIGN KEY (fkeyid) REFERENCES mytable2 ) ; ALTER TABLE mytable5 ADD ( CONSTRAINT myconst

我在一个文件中有以下类型的内容。仅当右括号符号出现在模式参考之后时,我才想替换它

请注意,符号
不必在行尾

cat file1    
ALTER TABLE mytable1
       ADD  ( CONSTRAINT myconst1 FOREIGN KEY (fkeyid)
                             REFERENCES mytable2 ) ;
ALTER TABLE mytable5
       ADD  ( CONSTRAINT myconst1 FOREIGN KEY (fkeyid)
                             REFERENCES mytable6 )
 ;
期望输出

ALTER TABLE mytable1
       ADD  ( CONSTRAINT myconst1 FOREIGN KEY (fkeyid)
                             REFERENCES mytable2  ;
ALTER TABLE mytable5
       ADD  ( CONSTRAINT myconst1 FOREIGN KEY (fkeyid)
                             REFERENCES mytable6 
 ;
我尝试了几件事,但在sed上没有运气

sed 's/\(REFERENCE[^)]*\))/\1/' file
包含
引用
后接非
字符(不包括下一个
字符)的字符串将使用反向引用进行捕获和输出

添加
-i
标志以在位编辑文件:

sed -i 's/\(REFERENCE[^)]*\))/\1/' file
编辑:

要仅在没有开口支架时拆卸,请执行以下操作:

sed 's/\(REFERENCE[^(]*[^()]*\))/\1/' file

您可以发布您的尝试吗?请提供一些更详细的信息或代码,说明您到目前为止尝试了什么?但是不久之后,我遇到了另一个问题,即文件中的一些行,如下面的ALTER TABLE1 ADD(约束myconst1外键(fkeyid)引用mytable2(col1);在这种情况下,我希望保留两个括号,即对于上述两行(括号)不应更换,仅当参考条款后未出现开口括号时才应更换