在每次出现两个字符之间插入

时间:2012-12-03 08:54:23

标签: sed

如果我可以在输入中的某个位置包含一系列两个或更多字符(在我的情况下为>),如何在{strong>每个出现的>之间插入内容}?

例如:>>>foo>,还有: >>>>foo>foo>并且: >>>>>foo>foo>foo>

使用's/>>/>foo>/g'当然给了我>foo>>foo>,这不是我需要的。

换句话说,我怎样才能将角色推回到模式空间,或者在不消耗角色的情况下匹配角色(这有什么意义呢?)

2 个答案:

答案 0 :(得分:1)

这也应该有用

sed ':b; s/>>/>foo>/; tb'

答案 1 :(得分:1)

使用Perl,您可以迭代地执行此操作

$ echo '>>>>' | perl -pe 's/>>/>foo>/ while />>/'
>foo>foo>foo>

或使用前瞻性断言,它不消耗第二个>

$ echo '>>>>' | perl -pe 's/>(?=>)/>foo/g'
>foo>foo>foo>