2008/11/7 Cristiano Ferrari <[EMAIL PROTECTED]>: > 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
olha só $ cat teste_20081107 current_data, current_data) current_data+1 $ sed 's/current_data\([^+]\)/current_data-2\1/g' teste_20081107 current_data-2, current_data-2) current_data+1
