Получить определенный символ в определенной строке и хранить в переменной

У меня есть файл, который содержит 2 строки, и я хочу получить конкретный символ из каждой строки и сделать некоторые операции.

Мой файл:

vm16_DSC_Instance_4 dsc-sig=172.16.17.14;Public=10.10.72.15;dsc-InterInstance=172.16.18.14;dsc-OAM=172.16.16.19
vm19_DSC_Instance_3 dsc-sig=172.16.17.15;Public=10.10.72.14;dsc-InterInstance=172.16.18.15;dsc-OAM=172.16.16.20

Требование: от этого имени ниже я хочу число как 4 и 3.

vm16_DSC_Instance_4
vm19_DSC_Instance_3

Ток: Здесь я получаю 4 и 3 в один выстрел. Я хочу взять 4 из 1-й строки и выполнить некоторые операции, затем я возьму 3 из 2-й строки и выполнить некоторые операции. По сути, я хочу, чтобы на основе счетчика он получал 1-ю или 2-ю строку символа

cat /tmp/tmp_inst_tmp |awk '{print $1}' | cut -d'_' -f4
4
3

2 ответа

Решение

Используйте массив для хранения результата и используйте sed для этой простой задачи

array=( $(sed -E 's/^[^[:blank:]]*_([[:digit:]]+)[[:blank:]]+.*$/\1/' file) )
for i in "${array[@]}"
do
# Do some task with "$i"
done

Имейте в виду [бесполезное использование кошки]

Другой подход с помощью sed и array:

while read -r num; do
  arr+=("$num")
done < <(sed 's/^[^ ]*\([0-9][0-9]*\) .*/\1/' file)

echo ${arr[0]}
4
echo ${arr[1]}
3
Другие вопросы по тегам