Как извлечь часть номера версии из строки версии?

Как извлечь номер версии из string=customer-asset-tag-1.0.2.9?

Желаемый результат:

Component= customer-asset-tag
version number=1.0.2.9
5
задан 2 March 2014 в 21:42

4 ответа

Существует много способов сделать это, например:

  • удар и подобные оболочки (см. здесь для большего количества информации)

    $ 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: "$1,$2,$3; print "Version: "$4}'
    Component: customer-asset-tag
    Version: 1.0.2.9
    

    Здесь, мы - разделитель полей установки awk к - (это используется для определения полей, 1-е поле $1, 2-е $2 и т.д.). Мы также устанавливаем выходного разделителя полей на -, таким образом, он распечатает правильно.

  • perl

    $ echo $string | perl -ne '/(.*)-([^-]+)/; print "Component: $1\nVersion: $2"'
    Component: customer-asset-tag
    Version: 1.0.2.9
    

    Это является самым устойчивым и общим из трех подходов, так как это просто ищет самую длинную строку не - символы и сохраняет это как версию и все перед версией до последнего - и сохраняет это как компонент.

0
ответ дан 2 March 2014 в 21:42

Извлечь Perl номера версии

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

способ сделать его

echo "customer-asset-tag-1.0.2.9"  | perl -ne  '/([a-z-]*)-([\d+.+]*)/; print "Component= $1\nVersion= $2\n"'
0
ответ дан 2 March 2014 в 21:42

Используйте следующее в терминале,

$ 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

или в сценарии оболочки,

#!/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"
0
ответ дан 2 March 2014 в 21:42

Другой awk команда,

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

Описание:

  • echo $string - отображает значение, присвоенное переменной строке.

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

    • | - стандартный вывод питался, как введено к следующей команде.

    • substr($1,1,18) - От входа берут первый столбец и отображают только символы, запускающиеся от положения 1 - 18 до стандартного вывода.

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

    • Дисплей символы, начинающие с 20-го положения в первом столбце от стандартного входа.
<час>
awk '{print substr($x,y,z)}'

x - номер столбца
y - стартовая позиция
z - Конечное положение

0
ответ дан 2 March 2014 в 21:42

Другие вопросы по тегам:

Похожие вопросы: