Como consultar-substituir depois de um determinado caractere em uma string?

1

Como substituir todos os / por . apenas na frase após o = ?

Por exemplo, a partir disso:

/buttress_unit/buttress_top/buttress_i_ps_but_cio_m1_i_but_m1_tx_wrapper_m1_pref_fifo_array_29__stream_id_3_0 = buttress_unit/buttress_top/buttress/i_ps_but_cio_m1/

Eu quero fazer isso:

/buttress_unit/buttress_top/buttress_i_ps_but_cio_m1_i_but_m1_tx_wrapper_m1_pref_fifo_array_29__stream_id_3_0 = buttress_unit.buttress_top.buttress.i_ps_but_cio_m1.
    
por omri 03.09.2015 / 18:17

1 resposta

2

você pode tentar

sed ':label
  s|\(=.*\)/|.|
  t label
'

O substituto s procura = seguido por qualquer coisa que termine com / . A captura com os parênteses exclui o% final/. A string de substituição copia a captura e adiciona um ponto. No entanto, você não pode simplesmente adicionar um g para fazer isso globalmente, já que o sed não parecerá uma segunda vez nos caracteres que já foram correspondidos. Então você adiciona um loop com um condicional goto (para evitar um loop infinito). t significa ir ao label label se os comandos anteriores fizeram uma alteração na linha.

    
por 03.09.2015 / 18:46

Tags