Regex 根据SED脚本中的长度用deli meter替换字符

Regex 根据SED脚本中的长度用deli meter替换字符,regex,sed,Regex,Sed,我想在sed脚本中实现以下内容。我尝试了贪婪操作符,但它没有像我预期的那样工作。供参考 :loop s#\(S\)\(.\)\(.*R\)#-\n\1\3\n# t loop s#SR#--# s#\n##g 如果图案有花,则应替换为数字-------- 如果此的模式哈希应替换为-- 所以数字替换字符等于匹配的模式长度,它在F和R之间不是sed,而是一个很好的答案,就像你的大多数答案一样。祝贺你完成10公里;-)这个解决方案只是我需要的,但在sed scriptdeli meter中,它可以

我想在sed脚本中实现以下内容。我尝试了贪婪操作符,但它没有像我预期的那样工作。供参考

:loop
s#\(S\)\(.\)\(.*R\)#-\n\1\3\n#
t loop
s#SR#--#
s#\n##g 
如果图案有花,则应替换为数字--------

如果此的模式哈希应替换为--


所以数字替换字符等于匹配的模式长度,它在F和R之间

不是sed,而是一个很好的答案,就像你的大多数答案一样。祝贺你完成10公里;-)这个解决方案只是我需要的,但在sed scriptdeli meter中,它可以是任何东西,必须为S到R进行替换
$ echo "a FloweR has FaR FeweR FlaiR" | perl -pe 's{F.*?R}{"-" x length $&}eg'
a ------ has --- ----- -----