Eu tenho a seguinte linha:
abababtestab
Estou tentando descobrir uma sed
expressão para remover todas as ocorrências do ab
início da linha, para que a linha transformada seja:
testab
Eu sinto que isso deve ser simples, mas eu realmente não sei nada sobre isso sed
.
O que tenho até agora é:
sed 's/^ab//'
Mas isso apenas remove a primeira ocorrência de ab.
sed
por volta de 1979, a apoiou. Teria que ser uma imitação inferior para não lidar com o agrupamento.\n*
, mas não\n\{min,max\}
.\(...\)*
, ou\(...\)\{min,max\}
, como resultado não intencional de uma implementação específica, e eles suportaram expressões de duplicação e intervalo após subexpressões e referências posteriores.\(ab\)\1*
versão funciona com a herança padrãosed
e a\(ab\)*
versão funciona com a herança SuSv4sed
. Pelo menos, faz para a minha compilação. É verdade que construí meu conjunto de herança contra a musl lib C e, portanto, posso imaginar que isso possa causar um comportamento diferente. Mas geralmente quando um recurso especificado funciona em uma ferramenta de herança SuSv4 da herança, mas não na ferramenta padrão, é porque o desenvolvedor fez isso.Outro
sed
:Com cada linha de entrada, configuramos um rótulo e
:1
, em seguida, fazemos as
substituiçãoab
no início da linha. Ses
ubstitution com sucesso, for ot
comando branch a label1
, refaça o trabalho até que nenhumab
padrão apareça no início da linha, estamos prontos.fonte
s/^ab//; t1
é suficiente