shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] sed com regex


From: Arthur M. Meskelis
Subject: Re: [shell-script] sed com regex
Date: Fri, 7 Nov 2008 11:16:34 -0200

2008/11/7 Cristiano Ferrari <address@hidden>:
> 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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]