Exclude algumas correspondências com sed

3

Eu tenho uma série de arquivos com entradas (namespaces no código fonte) como

FW.WGS.Web.HHH.Controls, 
FW.WGS.Web.HHH.Email,  
FW.WGS.Web.HHH.Account, etc    

e alguns com entradas

FW.WGS.Web.Controls, 
FW.WGS.Web.Email,      
FW.WGS.Web.Account, etc

Usando o sed (ou alguma outra ferramenta linux / unix) Eu quero mudar todos os FW.WGS.Web.Controls / Email / Account / etc para FW.WGS.Web.HHH.Control / Email / Account / etc. / p>

Meu comando sed atual corresponde a / WGS.Web / WGS.Web. \ HHH / g 'não é adequado - acabo com entradas como

FW.WGS.Web.HHH.HHH.Email

Por isso, preciso impedir que o sed combine linhas que já possuam "HHH".

    
por bryan 11.02.2011 / 20:58

2 respostas

8

No sed, você pode usar /pattern/!s/pattern/ , por exemplo

/HHH/!s/WGS\.Web/WGS\.Web\.HHH/g
    
por 11.02.2011 / 21:24
1
perl -pe 's/WGS\.Web(?!\.HHH)/$&.HHH/g'

(onde $& é um atalho para o texto correspondente)

Veja perlre .

    
por 11.02.2011 / 21:09