Existem muitas maneiras de fazer isso, por exemplo:
-
bash e shells similares (consulte aqui para obter mais informações)
$ string=customer-asset-tag-1.0.2.9 $ echo -e "Component: ${string:0:18}\nVersion: ${string:19}" Component: customer-asset-tag Version: 1.0.2.9
-
awk
$ echo $string | awk -F- -v OFS=- '{print "Component: ",,; print "Version: "}' Component: customer-asset-tag Version: 1.0.2.9
Aqui, estamos definindo o delimitador de campo
awk
para-
(isso é usado para definir campos, o primeiro campo é, o segundo
etc). Também estamos definindo o separador de campo de saída como
-
, para que seja impresso corretamente. -
perl
$ echo $string | perl -ne '/(.*)-([^-]+)/; print "Component: \nVersion: "' Component: customer-asset-tag Version: 1.0.2.9
Esta é a mais robusta e geral das três abordagens, pois ela simplesmente procura a string mais longa de caracteres não
-
e salva isso como a versão e tudo antes da versão até o último-
e salva isso como uma componente.