我有以下几行:
abababtestab
我正在尝试找出一个表达式来删除行开头处sed
所有出现的 ,因此转换后的行应该是:ab
testab
我觉得这应该很简单,但我真的什么都不知道sed
。
到目前为止我所拥有的是:
sed 's/^ab//'
但这只是删除了第一次出现的 ab。
答案1
答案2
其他sed
:
sed -e ':1' -e 's/^ab//;t1'
对于每一行输入,我们设置一个标签:1
,然后在行首进行s
替换。ab
如果s
ubstitution 成功,t
est 命令分支到 label 1
,重做工作直到ab
行首没有出现任何模式,我们就完成了。
答案3
处理反转的字符串可能会更容易。这样您就可以删除除第一个之外的所有(反向)事件。
$ echo "abababtestab" |
rev | sed 's/ba//2g' | rev
testab
即使您的字符串不以该模式开头,这也将起作用。