sed 's/\(.*\)\(number=[0-9]*;\)//'
No entanto, se houvesse várias ocorrências de number[0-9]*;
, isso moveria o último (por causa do ganancioso .*
). Para mover o primeiro:
sed -ne 's/number=[0-9]*;/\
&\
/; s/\(.*\)\n\(.*\)\n//p'
Ou seja, não use .*
, mas envolva a ocorrência (primeira vez) do padrão dentro de caracteres de nova linha (o único caractere que não pode ocorrer no espaço de padrão), o que torna a correspondência identificável unicamente na próxima s
command.
Isso assume que a entrada é um texto válido (em particular, que não há sequências de bytes que não formam caracteres válidos).
Você também pode usar perl
na linha de comando como:
perl -pe 'if (/number=[0-9]*;/) {$_ = "$&$'$'"}'
Ou
perl -pe 's/(.*?)(number=[0-9])/$2$1/'