URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9610
[ Назад ]

Исходное сообщение
"Извлечь несколько цифровых значений из генерируемой строки"

Отправлено DinDon , 24-Дек-12 16:06 
Задача:
Дана случайным образом генерируемая строка вида: 9 3484 5555 6734
Необходимо извлечь из неё каждую цифровую подстроку и присвоить генерируемой новой переменной вида xxx1, ... xxx4.
Неизвестна ни длинна изначальной строки - каждый раз может быть разная.
Ни количество потребных переменных - каждый раз количество подстрок может быть разным.

Как это можно реализовать?
Подозреваю что потребуется цикл.
Не понимаю как определить длину строки и как присвоить подстроку переменной?
Так как скрипт очень фигово относится к конструкции типа:
ch=$(awk '{print substr($0,1,1)}')


Содержание

Сообщения в этом обсуждении
"Извлечь несколько цифровых значений из генерируемой строки"
Отправлено DinDon , 24-Дек-12 17:49 
Как получить подстроку и присвоить её переменной понял:
subStr=$(echo $xxx | awk '{print $1}')

Для того чтобы сгенерировать n количество строк нужно узнать количество подстрок. Как???
По количеству пробелов считает не верно. Допустим между подстроками два пробела, а мне показывают четыре при подсчёте по этому методу:
count=$(echo $xxx | grep -o " " | wc -c)
Почему так, я могу предположить, допустим в строке есть пробелы в начале и конце строки которые не видно. Но как вычесть два лишних пробела из полученного числа?
Вариант $count - 2 не работает.



"Извлечь несколько цифровых значений из генерируемой строки"
Отправлено name , 24-Дек-12 18:08 
в цикле отрезать от строки пробелы, пока длина строки не станет нулевой и не кончатся пробелы

"Извлечь несколько цифровых значений из генерируемой строки"
Отправлено DinDon , 24-Дек-12 19:15 
> Как получить подстроку и присвоить её переменной понял:
> subStr=$(echo $xxx | awk '{print $1}')

Осталась последняя проблема:
Как указать в строке не awk '{print $1}') где 1 это цифра, а значение переменной которое генерируется в цикле? Не хочет awk  жевать переменные, хоть я тресни!


"Извлечь несколько цифровых значений из генерируемой строки"
Отправлено DinDon , 24-Дек-12 19:35 
>> Как получить подстроку и присвоить её переменной понял:
>> subStr=$(echo $xxx | awk '{print $1}')
> Осталась последняя проблема:
> Как указать в строке не awk '{print $1}') где 1 это цифра,
> а значение переменной которое генерируется в цикле? Не хочет awk  
> жевать переменные, хоть я тресни!

Решил и последнюю проблему. Пишется так:
awk '{print $'$i'}'