如何在字符串中的给定字符后进行查询替换?

如何在字符串中的给定字符后进行查询替换?

如何将the 后面的句子中的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会寻找=后面以 结尾的任何内容/。带括号的捕获排除了最后的/.替换字符串复制捕获内容,并添加一个点。但是,您不能仅添加 ag来全局执行此操作,因为 sed 不会第二次查看它已经匹配的字符。所以你添加一个带有条件的循环(以避免无限循环)。表示如果先前的命令对该行进行了更改,则t转到标签。label

相关内容