Como extraio a parte do número da versão da string de versão?

5

Como eu extraio o número da versão de string=customer-asset-tag-1.0.2.9 ?

Resultado desejado:

Component= customer-asset-tag
version number=1.0.2.9
    
por user254016 02.03.2014 / 18:10

4 respostas

4

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.

por terdon 02.03.2014 / 18:33
3

Para extrair o número da versão

echo "customer-asset-tag-1.0.2.9"  | sed 's/[a-z-]//g'

Perl maneira de fazê-lo

echo "customer-asset-tag-1.0.2.9"  | perl -ne  '/([a-z-]*)-([\d+.+]*)/; print "Component= \nVersion= \n"'
    
por devav2 02.03.2014 / 18:26
3

Use o seguinte no terminal

$ string=customer-asset-tag-1.0.2.9
$ ver=$(echo $string | awk -F- '{print $NF}')
$ Component=${string/-$ver/}
$ echo "version number=$ver"
version number=1.0.2.9
$ echo "Component=$Component"
Component=customer-asset-tag

ou dentro de um script de shell,

#!/bin/bash
string=customer-asset-tag-1.0.2.9
ver=$(echo $string | awk -F- '{print $NF}')
Component=${string/-$ver/}
echo "version number=$ver"
echo "Component=$Component"
    
por souravc 02.03.2014 / 18:16
2

Outro comando awk ,

$ string=customer-asset-tag-1.0.2.9
$ echo "Component= "$(echo $string | awk '{print substr(,1,18)}') && echo "Version number="$(echo $string | awk '{print substr(,20)}')
Component= customer-asset-tag
Version number=1.0.2.9

Descrição:

  • echo $string - exibe o valor atribuído à sequência de variáveis.

  • echo $string | awk '{print substr(,1,18)}'

    • | - a saída padrão foi alimentada como entrada para o seguinte comando.

    • substr(,1,18) - A partir da entrada, pegue a primeira coluna e exiba apenas os caracteres, começando da posição 1 a 18 até a saída padrão.

  • echo $string | awk '{print substr(,20)}'

    • Exibe os caracteres a partir da 20ª posição na primeira coluna a partir da entrada padrão.
awk '{print substr($x,y,z)}'

x - número da coluna
y - posição inicial
z - Posição final -

    
por Avinash Raj 02.03.2014 / 19:12

Tags