Answers:
sed 's/^\(ab\)*//' <in >out
您应该将其分组。
echo ababababtestab |
sed 's/^\(ab\)*//'
testab
不过,某些较旧的sed
s可能处理得不太好。尽管子表达式复制是BRE 的POSIX特定的功能,但有些sed
人不能正确地支持它。不过,在某些情况下...
echo abababtestab |
sed 's/^\(ab\)\1*//'
...可以代替。
sed
是大约1979年的第7版也支持它。不处理分组将是次等的模仿。
\(ab\)\1*
版本可以使用默认的传家宝sed
,\(ab\)*
版本可以使用SuSv4传家宝sed
。至少对我的构建有用。诚然,我针对musl lib C构建了传家宝集,所以我可以想象这可能导致它的行为有所不同。但是通常,当某个特定功能在传家宝SuSv4传家宝工具中可用但在默认工具中不起作用时,这是因为开发人员做到了。
另一个sed
:
sed -e ':1' -e 's/^ab//;t1'
在输入的每一行中,我们都设置了一个label :1
,然后s
在行ab
的开头进行ubstitution 。如果s
ubstitution成功,则t
est命令分支到label 1
,重做工作,直到ab
行开头没有模式出现,我们就完成了。
s/^ab//; t1
足够了