Извлечь определенное значение из переменной

Я хочу только знать, как извлечь значение из переменной в сценарии оболочки. Ниже приведен код:

var=Volume: 0: 100% 1: 100% 

или

var=Volume: 0: 35% 1: 35%  

Я хочу извлечь из переменной переменную 100 или 35 и сохранить ее в другой переменной. так как я могу это сделать?

1
задан 28 April 2014 в 16:47

2 ответа

Я думаю, что ваша цель немного ошибочна, поэтому я сделал то, что, как я ожидал бы, хотел бы сделать, разделил значения на отдельные значения.

var="Volume: 0: 70% 1: 12%"
source <(echo "$var" | grep -oP '\d+\: \d+' | sed -r 's/([0-9]+)\: /vol\1=/g')

Итак, для каждого входного тома является созданной переменной vol#. В приведенном выше примере echo $vol1 будет 70, а echo $vol2 дает 12.

Если var="Volume: 0: 70% 1: 12% 2: 12% 3: 41% 4: 19%", вы получите пять отдельных переменных.

3
ответ дан 24 May 2018 в 08:30

Если:

var="Volume: 0: 100% 1: 100%"

, то:

, чтобы извлечь первый 100, вы можете использовать:
temp=$(awk -F": |%" '{print $3}' <<< "$var")
для извлечения последнего 100 вы можете использовать:
temp=$(awk -F": |%" '{print $5}' <<< "$var")
для извлечения обоих 100 вы можете использовать:
temp=$(awk -F": |%" '{print $3, $5}' <<< "$var")
0
ответ дан 24 May 2018 в 08:30
  • 1
    например, var = "Volume: 0: 70% 1: 70%" то как можно извлечь 70 из этой переменной. ваш вышеприведенный ответ работает только для var = "Volume: 0: 100% 1: 100% " – Prakash V Holkar 28 April 2014 в 16:42

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

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