3

如果我可以在我的输入中的某个地方有一系列两个或更多字符(在我的情况下,>),我如何在每次出现之间插入一些东西>

例如:>>to >foo>,但也: >>>to>foo>foo>和: >>>>to >foo>foo>foo>

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

换句话说,我怎样才能将一个字符推回模式空间,或者匹配一个字符而不消耗它(这有什么意义吗?)

4

2 回答 2

1

这也应该有效

sed ':b; s/>>/>foo>/; tb'
于 2012-12-03T10:40:03.790 回答
1

使用 Perl,您可以迭代地完成它

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

或使用不消耗第二个的前瞻断言>

$ echo '>>>>' | perl -pe 's/>(?=>)/>foo/g'
>foo>foo>foo>
于 2012-12-03T11:24:14.917 回答