从模式空间的开头反复进行sed搜索

问题描述

当您在sed中发出's // g'命令时,每次替换后,将从替换的模式之后开始继续搜索。例如:

Elements

同时,如果将命令再次应用于整行,我们将得到@stripe/react-stripe-js作为结果(两次替换)。当然,一个人可以发出同一命令两次或三遍-但是如果我希望它重复运行直到没有匹配该怎么办? sed可以这样做吗,还是我需要诉诸awk?

解决方法

是的,sed支持分支命令,例如bt

$ echo 'ffoo' | sed ':a s/foo/oog/; ta'
oogg
  • :a用标签a标记替代命令
  • 只要替换成功,
  • ta就会跳到标签a

这是另一个例子:

$ echo 'coffining' | sed ':d s/fin//; td'
cog

有关详细信息,请参见sed manual