No sed, você pode usar /pattern/!s/pattern/
, por exemplo
/HHH/!s/WGS\.Web/WGS\.Web\.HHH/g
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".
perl -pe 's/WGS\.Web(?!\.HHH)/$&.HHH/g'
(onde $&
é um atalho para o texto correspondente)
Veja perlre
.
Tags sed text-editing