我在文件中有以下类型的内容。我想仅在模式)
REFERENCES
请注意,符号)
不必位于行的末尾
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
;
我尝试了一些但没有运气
答案 0 :(得分:1)
使用sed:
sed 's/\(REFERENCE[^)]*\))/\1/' file
使用反向引用捕获并输出包含REFERENCE
后跟非)
字符的字符串,直到和排除下一个)
字符。
添加-i
标志以编辑文件:
sed -i 's/\(REFERENCE[^)]*\))/\1/' file
修改强>
仅在没有左括号时删除:
sed 's/\(REFERENCE[^(]*[^()]*\))/\1/' file