Получить определенный символ в определенной строке и хранить в переменной
У меня есть файл, который содержит 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