Não há um padrão simples que seja correto em todas as circunstâncias; você precisaria escrever um analisador SQL para determinar quando o fim da instrução deveria ser ... e mesmo assim você precisaria esperar que não houvesse mágica especial acontecendo. Agora ANSI SQL não é Turing Complete (embora extensões possam ser) então você provavelmente poderia escrever um analisador ...
Ou você pode escrever um analisador baseado em pilha para adicionar um ;
após um fechamento de )
... e lidar com uma sintaxe incorreta.
Em vez disso, você pode querer usar algo mais provável para não corresponder erroneamente. Por exemplo, esse código pega na instrução INSERT INTO
e coloca um ;
na frente disso, lembrando de adicionar um no final.
sed -e 's/\( INSERT INTO 'somthing' ('something') VALUES (\)/;/g' -e 's/$/;/'
Obviamente, falharia se os dados inseridos tivessem essa string específica ...