Ilustre, bom dia.

Tenho um diretório com "trocentos" scripts SQL. Em alguns deles, que
não sei quais são, há o texto "current_date".

Preciso criar um script que processe este diretório e troque todos os
"currente_date" por "current_date-2".

Isso, em tese é facil:

# for *sql in FILE ; do sed 's/current_date/current_date-2/g' $FILE >
"novo-"$FILE ; done

Até aí tudo tranquilo.

O problema é que nestes arquivos tem algumas declações
'current_date+1' que eu não posso mudar e seu eu usar o comando
anterior, irão ficar 'current_date-2+1', que é errado.

Pensei então em usar a lista negada assim:

sed 's/current_date[^+]/current_date-2/g'

Assim, não caso com o current_date+1, mas caso com "current_date," ou
"current_date)", removendo a vírgula ou o parênteses que fazem parte
da estrutura da query.

Sei que a solução é simples, mas não estou conseguindo "sair do quadrado".

Será que alguém poderia me dar uma idéia de como eu poderia trocar
todos os current_date, exceto aqueles sucedidos por um caracter de '+'?

Att.


Cristiano

Responder a