A solução apresentada pelo sergio é mais simples que a minha e funciona perfeitamente, só colocaria mais algumas coisinhas para evitar probelmas, veja: sed -i "/^suffix.*\".*\"$/ s/\".*\"$/\"dc= $var1,dc= $var2\"/" arquivo
Assim com ^suffix.*\".*\"$ já casamos a linha completa e não qualquer linha que tenha suffix, depois substituimos os valoes entre "" Acho que essa é foi a melhor solução Lawrence Waclawiak escreveu: > Solução fresquinha vinda das aulas do Júlio. > Para isso lembrei que existe o esquema de retrovisor para expressões > regulares, veja: > > l...@lbw-laptop:~$ cat bla > > wqddm > dwddwww > wdwd3e3e3323 > suffix "dc=my-domain, dc=com" > drop "dc=my-domain, dc=com" > 545454f > hyhjuyhh > > l...@lbw-laptop:~$ cat bla |sed -r > 's/^(suffix.*)".*"$/\1"qualquecoisa,qualquercoisa"/' > wqddm > dwddwww > wdwd3e3e3323 > suffix "qualquecoisa,qualquercoisa" > drop "dc=my-domain, dc=com" > 545454f > hyhjuyhh > > Utilizei o sed com -r para habilitar o regex estendido, tudo que estiver > entre os () poderá ser referenciado posteriormente como \1, dessa forma > você pode recurerar esse valor para reescrever a linha. > Note que nesse arquivo que criei existem 2 linhas que possuem "" mas só > é substituída a que começa com suffix, dessa forma vc tbm não precisa se > preocupar se o que tem depois do suffix são espaços ou tbs. > > Espero que ajude. > > Abraço > > Marcio Gil escreveu: > >>> -----Original Message----- >>> From: Luiz Guilherme Nunes Fernandes >>> >>> Subject: Sed não entendo >>> Prezados, >>> >>> tudo jóia? >>> >>> me deparei com o seguinte problema que não consigo resolver. >>> >>> Dentro dum arquivo se encontra esta linha. >>> >>> suffix "dc=dc=my-domain,dc=com" >>> >>> Estou querendo usar o sed para trocar os valores dentro das >>> aspas, mas não >>> está funcionado. >>> >>> sed 's#^suffix* *"dc=my-domain,dc=com"#suffix >>> "dc=xxx,dc=xxx,dc=xxx"#g' >>> >>> E não entendo pq não está indo. >>> O resto do arquivo tudo que não tem aspas foi alterado. >>> >>> Alguém poderia me dar a solução e me explicar por que neste >>> caso ele não altero? >>> >>> >> Já tive alguns problemas por causa de espaços serem na verdade >> tabulações. Além disso na sua expressão regular falta um "dc=", >> tenta assim: >> >> sed 's#^suffix[[:space:]]*"dc=dc=my-domain,dc=com"#suffix >> "dc=xxx,dc=xxx,dc=xxx"#g' >> >> >> > > > > > ------------------------------------ > > --------------------------------------------------------------------- > Esta lista não admite a abordagem de outras liguagens de programação, como > perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio > aviso. > --------------------------------------------------------------------- > Sair da lista: [email protected] > --------------------------------------------------------------------- > Esta lista é moderada de acordo com o previsto em > http://www.listas-discussao.cjb.net > --------------------------------------------------------------------- > Servidor Newsgroup da lista: news.gmane.org > Grupo: gmane.org.user-groups.programming.shell.brazil > > Links do Yahoo! Grupos > > > > ------------------------------------ --------------------------------------------------------------------- Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso. --------------------------------------------------------------------- Sair da lista: [email protected] --------------------------------------------------------------------- Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net --------------------------------------------------------------------- Servidor Newsgroup da lista: news.gmane.org Grupo: gmane.org.user-groups.programming.shell.brazil Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/shell-script/ <*> Para sair deste grupo, envie um e-mail para: [email protected] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
