Em uma variável:
var=pkg-new-pkg-20180925-090719.x86_64
printf '%s\n' "${var#*pkg-}"
${var#pattern}
remove a parte inicial mais curta que corresponde ao padrão ( ${var##pattern}
da parte mais longa).
Em um fluxo de entrada de texto:
sed 's/pkg-/\
/;s/.*\n//'
Isso substitui a ocorrência primeira de pkg-
por um caractere de nova linha (um caractere que não ocorre no espaço padrão) e, em seguida, remove tudo até esse caractere de nova linha. Algumas implementações sed
também permitem escrever sed 's/pkg-/\n/;s/.*\n//'
, embora não seja portátil nem padrão.
Com ast-open sed
(também funciona com ssed -R
):
sed -E 's/.*?pkg-//'
com perl
:
perl -pe 's/.*?pkg-//'
Em que .*?
é a versão não mesclada de .*
.