问题描述
当您在sed中发出's // g'命令时,每次替换后,将从替换的模式之后开始继续搜索。例如:
Elements
同时,如果将命令再次应用于整行,我们将得到@stripe/react-stripe-js
作为结果(两次替换)。当然,一个人可以发出同一命令两次或三遍-但是如果我希望它重复运行直到没有匹配该怎么办? sed可以这样做吗,还是我需要诉诸awk?
解决方法
是的,sed
支持分支命令,例如b
和t
$ echo 'ffoo' | sed ':a s/foo/oog/; ta'
oogg
-
:a
用标签a
标记替代命令
只要替换成功, -
ta
就会跳到标签a
这是另一个例子:
$ echo 'coffining' | sed ':d s/fin//; td'
cog
有关详细信息,请参见sed manual。