文字列内の特定の文字の後に照会して置き換える方法は?

文字列内の特定の文字の後に照会して置き換える方法は?

?次の文でallを/onlyに置き換える方法は?.=

たとえば、次のようになります。

/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/

私はこれをしたい:

/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.

ベストアンサー1

あなたは試すことができます

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

置換はで終わるすべての項目をs見つけます。角かっこで囲まれたキャプチャは最後です。置換文字列を除き、キャプチャした内容をコピーして点を追加します。ただし、sedはすでに一致する文字を2回検索しないため、グローバルにこれを実行するためにaを追加することはできません。したがって、条件付きのループを追加します。=//g行く(無限ループを避けるため)。前のコマンドで行が変更された場合にtラベルに移動することを示します。label

おすすめ記事