Ao usar o regex do sed, existe uma maneira de usar pontuação no termo de pesquisa sem realmente alterá-lo durante a substituição

0

Digamos que eu queira substituir o XOrg [;;] por X-Org [mantendo a pontuação intacta]. Então XOrg, daria o X-Org e 'XOrg' daria 'X-Org' etc.

Existe alguma maneira de fazer isso com o sed no terminal linux?

Agora eu posso fazer

  sed -r 's/XOrg[ ,.;]/X-Org/g'

mas aqui eu tenho que escolher qual pontuação sai do outro lado. Como eu digo para manter as mesmas pontuações encontradas?

    
por thebunnyrules 16.04.2018 / 04:47

1 resposta

0

Acabei de encontrar a resposta aqui: link

Para delimitar um termo de pesquisa por um intervalo de caracteres, como pontuações e espaços, e fazer com que esses caracteres sejam reproduzidos em vez de serem substituídos, a seguinte sintaxe:

    sed -r 's/([group1])term([group2])/output/g' 

onde ([groupx]) pode ser ([.;] (]) ou ([[: punct:]]]).

   echo dep\!|sed -r 's/dep([ ,.;)!])/dependency/' 

vai dar: dep! - > dependência!

  echo ' dep,'|sed -r 's/([[:punct:] ])dep([[:punct:] ])/dependency/' 

fornecerá 'dep' - > 'dependência',

    
por 16.04.2018 / 06:20